summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-12-06 16:17:46 +0100
committerThomas Haller <thaller@redhat.com>2020-12-06 16:17:48 +0100
commit507c7c2b8abc12ad0729b2c1c7489207f56c6f9a (patch)
treeb7ee6dbcff8c7d507038d1ee82ad99e3bc4e7d31
parent6f32c5c10736d194322c760b108ce7d5de44d4a0 (diff)
parentae5ea7fa62201dc0809842c091edcc688702d1f5 (diff)
release: bump version to 1.29.5 (development)1.29.5-dev
-rw-r--r--.clang-format15
-rw-r--r--.git-blame-ignore-revs7
-rw-r--r--.gitignore1
-rw-r--r--.gitlab-ci.yml945
-rwxr-xr-x.gitlab-ci/build.sh48
-rw-r--r--.gitlab-ci/ci.template229
-rw-r--r--.gitlab-ci/config.yml62
-rwxr-xr-x.gitlab-ci/debian-install.sh29
-rwxr-xr-x.gitlab-ci/fedora-install.sh55
-rw-r--r--.mailmap1
-rw-r--r--.travis.yml75
-rw-r--r--CONTRIBUTING55
-rw-r--r--Makefile.am39
-rw-r--r--Makefile.examples2
-rw-r--r--NEWS16
-rw-r--r--clients/cli/connections.c220
-rw-r--r--clients/cli/generate-docs-nm-settings-nmcli.xml.in1125
-rw-r--r--clients/cli/meson.build26
-rw-r--r--clients/cli/nmcli.c279
-rw-r--r--clients/cli/nmcli.h8
-rw-r--r--clients/cli/utils.c16
-rw-r--r--clients/common/meson.build4
-rw-r--r--clients/common/nm-meta-setting-desc.c81
-rw-r--r--clients/common/settings-docs.h.in6
-rw-r--r--clients/common/tests/test-clients-common.c8
-rw-r--r--clients/tests/test-client.check-on-disk/test_003.expected1424
-rw-r--r--clients/tests/test-client.check-on-disk/test_004.expected4572
-rwxr-xr-xclients/tests/test-client.py6
-rw-r--r--configure.ac4
-rwxr-xr-xcontrib/debian/REQUIRED_PACKAGES4
-rwxr-xr-xcontrib/fedora/REQUIRED_PACKAGES3
-rw-r--r--contrib/fedora/rpm/NetworkManager.conf2
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec24
-rwxr-xr-xcontrib/fedora/rpm/build.sh18
-rwxr-xr-xcontrib/fedora/rpm/build_clean.sh58
-rwxr-xr-xcontrib/fedora/rpm/release.sh118
-rwxr-xr-xcontrib/scripts/checkpatch-feature-branch.sh21
-rwxr-xr-xcontrib/scripts/checkpatch.pl4
-rwxr-xr-xcontrib/scripts/find-backports336
-rwxr-xr-xcontrib/scripts/nm-ci-run.sh12
-rw-r--r--data/NetworkManager-wait-online.service.in2
-rw-r--r--docs/api/Makefile.am20
-rw-r--r--docs/libnm/Makefile.am15
-rw-r--r--docs/libnm/libnm-docs.xml4
-rwxr-xr-xexamples/python/dbus/add-wifi-psk-connection.py4
-rwxr-xr-xexamples/python/gi/nm-keyfile.py139
-rwxr-xr-xexamples/python/gi/ovs-external-ids.py663
-rw-r--r--libnm-core/meson.build21
-rw-r--r--libnm-core/nm-connection.c4
-rw-r--r--libnm-core/nm-core-internal.h6
-rw-r--r--libnm-core/nm-core-types.h5
-rw-r--r--libnm-core/nm-dbus-interface.h2
-rw-r--r--libnm-core/nm-keyfile.h165
-rw-r--r--libnm-core/nm-keyfile/nm-keyfile-internal.h98
-rw-r--r--libnm-core/nm-keyfile/nm-keyfile-utils.c6
-rw-r--r--libnm-core/nm-keyfile/nm-keyfile-utils.h2
-rw-r--r--libnm-core/nm-keyfile/nm-keyfile.c207
-rw-r--r--libnm-core/nm-libnm-core-aux/nm-dispatcher-api.h2
-rw-r--r--libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c58
-rw-r--r--libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.h10
-rw-r--r--libnm-core/nm-setting-6lowpan.c2
-rw-r--r--libnm-core/nm-setting-8021x.c2
-rw-r--r--libnm-core/nm-setting-adsl.c2
-rw-r--r--libnm-core/nm-setting-bluetooth.c2
-rw-r--r--libnm-core/nm-setting-bond.c53
-rw-r--r--libnm-core/nm-setting-bridge-port.c2
-rw-r--r--libnm-core/nm-setting-bridge.c2
-rw-r--r--libnm-core/nm-setting-cdma.c2
-rw-r--r--libnm-core/nm-setting-connection.c2
-rw-r--r--libnm-core/nm-setting-dcb.c2
-rw-r--r--libnm-core/nm-setting-dummy.c2
-rw-r--r--libnm-core/nm-setting-generic.c2
-rw-r--r--libnm-core/nm-setting-gsm.c2
-rw-r--r--libnm-core/nm-setting-hostname.c339
-rw-r--r--libnm-core/nm-setting-hostname.h53
-rw-r--r--libnm-core/nm-setting-infiniband.c2
-rw-r--r--libnm-core/nm-setting-ip-tunnel.c2
-rw-r--r--libnm-core/nm-setting-ip4-config.c2
-rw-r--r--libnm-core/nm-setting-ip6-config.c2
-rw-r--r--libnm-core/nm-setting-macsec.c2
-rw-r--r--libnm-core/nm-setting-macvlan.c2
-rw-r--r--libnm-core/nm-setting-match.c2
-rw-r--r--libnm-core/nm-setting-olpc-mesh.c2
-rw-r--r--libnm-core/nm-setting-ovs-bridge.c2
-rw-r--r--libnm-core/nm-setting-ovs-dpdk.c2
-rw-r--r--libnm-core/nm-setting-ovs-external-ids.c536
-rw-r--r--libnm-core/nm-setting-ovs-external-ids.h68
-rw-r--r--libnm-core/nm-setting-ovs-interface.c2
-rw-r--r--libnm-core/nm-setting-ovs-patch.c2
-rw-r--r--libnm-core/nm-setting-ovs-port.c2
-rw-r--r--libnm-core/nm-setting-ppp.c2
-rw-r--r--libnm-core/nm-setting-pppoe.c2
-rw-r--r--libnm-core/nm-setting-private.h1
-rw-r--r--libnm-core/nm-setting-proxy.c2
-rw-r--r--libnm-core/nm-setting-serial.c2
-rw-r--r--libnm-core/nm-setting-sriov.c2
-rw-r--r--libnm-core/nm-setting-tc-config.c2
-rw-r--r--libnm-core/nm-setting-team-port.c2
-rw-r--r--libnm-core/nm-setting-team.c2
-rw-r--r--libnm-core/nm-setting-tun.c2
-rw-r--r--libnm-core/nm-setting-user.c14
-rw-r--r--libnm-core/nm-setting-veth.c194
-rw-r--r--libnm-core/nm-setting-veth.h41
-rw-r--r--libnm-core/nm-setting-vlan.c2
-rw-r--r--libnm-core/nm-setting-vpn.c2
-rw-r--r--libnm-core/nm-setting-vrf.c2
-rw-r--r--libnm-core/nm-setting-vxlan.c72
-rw-r--r--libnm-core/nm-setting-wimax.c2
-rw-r--r--libnm-core/nm-setting-wired.c2
-rw-r--r--libnm-core/nm-setting-wireless-security.c2
-rw-r--r--libnm-core/nm-setting-wireless.c2
-rw-r--r--libnm-core/nm-setting-wpan.c2
-rw-r--r--libnm-core/nm-setting.c40
-rw-r--r--libnm-core/nm-simple-connection.c2
-rw-r--r--libnm-core/nm-team-utils.c21
-rw-r--r--libnm-core/nm-utils.c145
-rw-r--r--libnm-core/nm-version.h14
-rw-r--r--libnm-core/nm-vpn-dbus-interface.h2
-rw-r--r--libnm-core/tests/test-general.c8
-rw-r--r--libnm/NetworkManager.h3
-rw-r--r--libnm/libnm.ver29
-rw-r--r--libnm/meson.build6
-rw-r--r--libnm/nm-access-point.c2
-rw-r--r--libnm/nm-active-connection.c2
-rw-r--r--libnm/nm-autoptr.h2
-rw-r--r--libnm/nm-checkpoint.c2
-rw-r--r--libnm/nm-client.c14
-rw-r--r--libnm/nm-client.h5
-rw-r--r--libnm/nm-device-6lowpan.c2
-rw-r--r--libnm/nm-device-adsl.c2
-rw-r--r--libnm/nm-device-bond.c2
-rw-r--r--libnm/nm-device-bridge.c2
-rw-r--r--libnm/nm-device-bt.c2
-rw-r--r--libnm/nm-device-dummy.c2
-rw-r--r--libnm/nm-device-ethernet.c61
-rw-r--r--libnm/nm-device-generic.c2
-rw-r--r--libnm/nm-device-infiniband.c2
-rw-r--r--libnm/nm-device-ip-tunnel.c2
-rw-r--r--libnm/nm-device-macsec.c2
-rw-r--r--libnm/nm-device-macvlan.c2
-rw-r--r--libnm/nm-device-modem.c2
-rw-r--r--libnm/nm-device-olpc-mesh.c2
-rw-r--r--libnm/nm-device-ovs-bridge.c2
-rw-r--r--libnm/nm-device-ovs-interface.c2
-rw-r--r--libnm/nm-device-ovs-port.c2
-rw-r--r--libnm/nm-device-ppp.c2
-rw-r--r--libnm/nm-device-team.c2
-rw-r--r--libnm/nm-device-tun.c2
-rw-r--r--libnm/nm-device-veth.c124
-rw-r--r--libnm/nm-device-veth.h41
-rw-r--r--libnm/nm-device-vlan.c2
-rw-r--r--libnm/nm-device-vrf.c2
-rw-r--r--libnm/nm-device-vxlan.c2
-rw-r--r--libnm/nm-device-wifi-p2p.c2
-rw-r--r--libnm/nm-device-wifi.c2
-rw-r--r--libnm/nm-device-wireguard.c2
-rw-r--r--libnm/nm-device-wpan.c2
-rw-r--r--libnm/nm-dhcp-config.c4
-rw-r--r--libnm/nm-ip-config.c4
-rw-r--r--libnm/nm-libnm-utils.c39
-rw-r--r--libnm/nm-libnm-utils.h29
-rw-r--r--libnm/nm-remote-connection.c2
-rw-r--r--libnm/nm-types.h3
-rw-r--r--libnm/nm-vpn-connection.c2
-rw-r--r--libnm/nm-wifi-p2p-peer.c2
-rw-r--r--libnm/tests/test-libnm.c168
-rw-r--r--man/NetworkManager.conf.xml75
-rw-r--r--man/nmcli.xml75
-rw-r--r--meson.build12
-rw-r--r--po/POTFILES.in4
-rw-r--r--po/da.po602
-rw-r--r--po/uk.po2079
-rw-r--r--shared/c-rbtree/AUTHORS2
-rw-r--r--shared/nm-glib-aux/nm-c-list.h5
-rw-r--r--shared/nm-glib-aux/nm-glib.h2
-rw-r--r--shared/nm-glib-aux/nm-hash-utils.h8
-rw-r--r--shared/nm-glib-aux/nm-logging-fwd.h10
-rw-r--r--shared/nm-glib-aux/nm-macros-internal.h12
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.c157
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h189
-rw-r--r--shared/nm-glib-aux/nm-str-buf.h27
-rw-r--r--shared/nm-glib-aux/tests/test-shared-general.c33
-rw-r--r--shared/nm-meta-setting.c52
-rw-r--r--shared/nm-meta-setting.h7
-rw-r--r--shared/nm-std-aux/c-list-util.c5
-rw-r--r--shared/nm-std-aux/c-list-util.h11
-rw-r--r--shared/nm-std-aux/nm-std-aux.h48
-rw-r--r--shared/nm-test-utils-impl.c2
-rw-r--r--shared/nm-udev-aux/nm-udev-utils.c2
-rw-r--r--shared/nm-udev-aux/nm-udev-utils.h2
-rw-r--r--shared/nm-utils/nm-test-utils.h19
-rw-r--r--shared/nm-version-macros.h.in3
-rw-r--r--src/NetworkManagerUtils.c254
-rw-r--r--src/NetworkManagerUtils.h27
-rw-r--r--src/devices/adsl/nm-atm-manager.c2
-rw-r--r--src/devices/adsl/nm-device-adsl.c30
-rw-r--r--src/devices/bluetooth/nm-bluez-manager.c2
-rw-r--r--src/devices/bluetooth/nm-device-bt.c2
-rw-r--r--src/devices/nm-device-6lowpan.c22
-rw-r--r--src/devices/nm-device-bond.c34
-rw-r--r--src/devices/nm-device-bridge.c28
-rw-r--r--src/devices/nm-device-dummy.c22
-rw-r--r--src/devices/nm-device-ethernet.c38
-rw-r--r--src/devices/nm-device-factory.c2
-rw-r--r--src/devices/nm-device-generic.c20
-rw-r--r--src/devices/nm-device-infiniband.c26
-rw-r--r--src/devices/nm-device-ip-tunnel.c26
-rw-r--r--src/devices/nm-device-logging.h63
-rw-r--r--src/devices/nm-device-macsec.c22
-rw-r--r--src/devices/nm-device-macvlan.c26
-rw-r--r--src/devices/nm-device-ppp.c22
-rw-r--r--src/devices/nm-device-private.h4
-rw-r--r--src/devices/nm-device-tun.c22
-rw-r--r--src/devices/nm-device-veth.c121
-rw-r--r--src/devices/nm-device-vlan.c28
-rw-r--r--src/devices/nm-device-vrf.c2
-rw-r--r--src/devices/nm-device-vxlan.c68
-rw-r--r--src/devices/nm-device-wireguard.c22
-rw-r--r--src/devices/nm-device-wpan.c22
-rw-r--r--src/devices/nm-device.c1209
-rw-r--r--src/devices/nm-device.h16
-rw-r--r--src/devices/nm-lldp-listener.c2
-rw-r--r--src/devices/ovs/nm-device-ovs-bridge.c57
-rw-r--r--src/devices/ovs/nm-device-ovs-bridge.h5
-rw-r--r--src/devices/ovs/nm-device-ovs-interface.c32
-rw-r--r--src/devices/ovs/nm-device-ovs-port.c20
-rw-r--r--src/devices/ovs/nm-ovs-factory.c20
-rw-r--r--src/devices/ovs/nm-ovsdb.c1519
-rw-r--r--src/devices/ovs/nm-ovsdb.h9
-rw-r--r--src/devices/team/nm-device-team.c26
-rw-r--r--src/devices/team/nm-team-factory.c2
-rw-r--r--src/devices/wifi/nm-device-iwd.c1440
-rw-r--r--src/devices/wifi/nm-device-iwd.h2
-rw-r--r--src/devices/wifi/nm-device-olpc-mesh.c22
-rw-r--r--src/devices/wifi/nm-device-wifi-p2p.c2
-rw-r--r--src/devices/wifi/nm-device-wifi.c72
-rw-r--r--src/devices/wifi/nm-iwd-manager.c672
-rw-r--r--src/devices/wifi/nm-iwd-manager.h3
-rw-r--r--src/devices/wifi/nm-wifi-ap.c51
-rw-r--r--src/devices/wifi/nm-wifi-ap.h36
-rw-r--r--src/devices/wifi/nm-wifi-factory.c2
-rw-r--r--src/devices/wifi/nm-wifi-p2p-peer.c2
-rw-r--r--src/devices/wifi/nm-wifi-utils.c49
-rw-r--r--src/devices/wifi/nm-wifi-utils.h5
-rw-r--r--src/devices/wwan/nm-device-modem.c2
-rw-r--r--src/devices/wwan/nm-modem-ofono.c28
-rw-r--r--src/devices/wwan/nm-wwan-factory.c2
-rw-r--r--src/dns/nm-dns-dnsmasq.c4
-rw-r--r--src/dns/nm-dns-manager.c273
-rw-r--r--src/dns/nm-dns-manager.h7
-rw-r--r--src/dns/nm-dns-plugin.h2
-rw-r--r--src/dns/nm-dns-systemd-resolved.c6
-rw-r--r--src/dnsmasq/nm-dnsmasq-manager.c2
-rw-r--r--src/initrd/nmi-cmdline-reader.c15
-rw-r--r--src/meson.build1
-rw-r--r--src/nm-act-request.c156
-rw-r--r--src/nm-act-request.h10
-rw-r--r--src/nm-config-data.c8
-rw-r--r--src/nm-config.c1
-rw-r--r--src/nm-config.h1
-rw-r--r--src/nm-core-utils.c55
-rw-r--r--src/nm-core-utils.h21
-rw-r--r--src/nm-dispatcher.c237
-rw-r--r--src/nm-ip4-config.c12
-rw-r--r--src/nm-ip4-config.h62
-rw-r--r--src/nm-ip6-config.c12
-rw-r--r--src/nm-l3-config-data.c89
-rw-r--r--src/nm-l3-config-data.h13
-rw-r--r--src/nm-l3-ipv4ll.c1058
-rw-r--r--src/nm-l3-ipv4ll.h118
-rw-r--r--src/nm-l3cfg.c2330
-rw-r--r--src/nm-l3cfg.h104
-rw-r--r--src/nm-logging.h12
-rw-r--r--src/nm-manager.c63
-rw-r--r--src/nm-manager.h17
-rw-r--r--src/nm-netns.c15
-rw-r--r--src/nm-netns.h2
-rw-r--r--src/nm-pacrunner-manager.c63
-rw-r--r--src/nm-policy.c391
-rw-r--r--src/platform/nm-linux-platform.c26
-rw-r--r--src/platform/nm-platform.c119
-rw-r--r--src/platform/nm-platform.h145
-rw-r--r--src/platform/nmp-object.c8
-rw-r--r--src/platform/nmp-object.h104
-rw-r--r--src/platform/tests/test-common.c153
-rw-r--r--src/platform/tests/test-common.h9
-rw-r--r--src/platform/wifi/nm-wifi-utils-nl80211.c283
-rw-r--r--src/platform/wifi/nm-wifi-utils-private.h18
-rw-r--r--src/platform/wifi/nm-wifi-utils-wext.c38
-rw-r--r--src/platform/wifi/nm-wifi-utils.c23
-rw-r--r--src/platform/wifi/nm-wifi-utils.h19
-rw-r--r--src/ppp/nm-ppp-manager.c3
-rw-r--r--src/settings/nm-secret-agent.c2
-rw-r--r--src/settings/nm-settings.c8
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c117
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c4
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h2
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c24
-rw-r--r--src/supplicant/nm-supplicant-interface.c58
-rw-r--r--src/supplicant/nm-supplicant-interface.h2
-rw-r--r--src/supplicant/nm-supplicant-types.h2
-rw-r--r--src/systemd/src/libsystemd/sd-event/event-source.h1
-rw-r--r--src/systemd/src/libsystemd/sd-event/sd-event.c99
-rw-r--r--src/systemd/src/systemd/sd-event.h2
-rw-r--r--src/tests/test-core-with-expect.c36
-rw-r--r--src/tests/test-core.c26
-rw-r--r--src/tests/test-l3cfg.c531
-rw-r--r--src/vpn/nm-vpn-connection.c32
-rwxr-xr-xtools/check-compare-generated.sh18
-rwxr-xr-xtools/check-config-options.sh4
-rwxr-xr-xtools/check-gitlab-ci.sh33
-rwxr-xr-xtools/check-settings-docs.sh19
-rwxr-xr-xtools/test-networkmanager-service.py251
313 files changed, 20740 insertions, 10020 deletions
diff --git a/.clang-format b/.clang-format
index 714ce0ea4d..13c9899c60 100644
--- a/.clang-format
+++ b/.clang-format
@@ -66,9 +66,12 @@ SpacesInContainerLiterals: false
SpacesInParentheses: false
ForEachMacros: ['c_list_for_each',
+ 'c_list_for_each_prev',
+ 'c_list_for_each_prev_safe',
'c_list_for_each_continue',
'c_list_for_each_entry',
'c_list_for_each_entry_continue',
+ 'c_list_for_each_entry_prev',
'c_list_for_each_entry_safe',
'c_list_for_each_entry_safe_continue',
'c_list_for_each_entry_safe_unlink',
@@ -85,24 +88,34 @@ ForEachMacros: ['c_list_for_each',
'c_rbtree_for_each_safe',
'c_rbtree_for_each_safe_postorder',
'c_rbtree_for_each_safe_postorder_unlink',
+ 'json_array_foreach',
+ 'json_object_foreach',
'json_object_foreach_safe',
'ndp_msg_opt_dnssl_for_each_domain',
'ndp_msg_opt_for_each_offset',
'ndp_msg_opt_rdnss_for_each_addr',
'nla_for_each_attr',
'nla_for_each_nested',
- 'nm_c_list_for_each_entry_prev',
'nm_dedup_multi_iter_for_each',
'nm_ip_config_iter_ip4_address_for_each',
'nm_ip_config_iter_ip4_route_for_each',
'nm_ip_config_iter_ip6_address_for_each',
'nm_ip_config_iter_ip6_route_for_each',
+ 'nm_ip_config_iter_ip_address_for_each',
+ 'nm_ip_config_iter_ip_route_for_each',
'nm_json_array_foreach',
'nm_json_object_foreach',
+ 'nm_l3_config_data_iter_ip4_address_for_each',
+ 'nm_l3_config_data_iter_ip4_route_for_each',
+ 'nm_l3_config_data_iter_ip6_address_for_each',
+ 'nm_l3_config_data_iter_ip6_route_for_each',
+ 'nm_l3_config_data_iter_obj_for_each',
'nm_manager_for_each_active_connection',
+ 'nm_manager_for_each_active_connection_prev',
'nm_manager_for_each_active_connection_safe',
'nm_manager_for_each_device',
'nm_manager_for_each_device_safe',
+ 'nm_platform_iter_obj_for_each',
'nmp_cache_iter_for_each',
'nmp_cache_iter_for_each_link',
]
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
new file mode 100644
index 0000000000..52f236506d
--- /dev/null
+++ b/.git-blame-ignore-revs
@@ -0,0 +1,7 @@
+# The commits that did automated reformatting. You can ignore them
+# during git-blame with `--ignore-rev` or `--ignore-revs-file`.
+#
+# $ git config --add 'blame.ignoreRevsFile' '.git-blame-ignore-revs'
+#
+328fb90f3e0d4e35975aff63944ac0412d7893a5
+740b092fda3d5f45102422f22884c88ea6c42858
diff --git a/.gitignore b/.gitignore
index db9a2e86a2..b21bbf5c09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,6 +95,7 @@ test-*.trs
/docs/api/NetworkManager-*.txt
/docs/api/NetworkManager-decl-list.txt.bak
/docs/api/NetworkManager-decl.txt.bak
+/docs/api/NetworkManager.actions
/docs/api/NetworkManager.args
/docs/api/NetworkManager.hierarchy
/docs/api/NetworkManager.interfaces
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e4708e3ca0..68463b8def 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,221 +1,852 @@
-# Quick syntax check:
-# python -c 'import sys, yaml; yaml.dump (yaml.load (sys.stdin), sys.stdout)' <.gitlab-ci.yml
-
-# If things don't seem to work, this can help:
-# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/ci/lint
+# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
+
+########################################
+# #
+# THIS FILE IS GENERATED, DO NOT EDIT #
+# #
+########################################
+
+
+.templates_sha: &template_sha 766e3d77c647e404b349e398427e8965a1769b64 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+
+include:
+ # Centos container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/centos.yml'
+ # Debian container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/debian.yml'
+ # Fedora container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/fedora.yml'
+ # Ubuntu container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/ubuntu.yml'
stages:
+ - prep
- test
- deploy
- triage
+ - container_clean
+
+variables:
+ FDO_UPSTREAM_REPO: NetworkManager/NetworkManager
+ GIT_DEPTH: 1
+ # these tags should be updated each time the list of packages is updated
+ # changing these will force rebuilding the associated image
+ # Note: these tags have no meaning and are not tied to a particular NM version
+ FEDORA_TAG: '2020-11-17.0-5276eb5b0e3c'
+ UBUNTU_TAG: '2020-11-17.0-89dd88de8047'
+ DEBIAN_TAG: '2020-11-17.0-89dd88de8047'
+ CENTOS_TAG: '2020-11-17.0-5276eb5b0e3c'
+
+ FEDORA_EXEC: 'bash .gitlab-ci/fedora-install.sh'
+ UBUNTU_EXEC: 'bash .gitlab-ci/debian-install.sh'
+ DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
+ CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh'
+
+.nm_artifacts:
+ variables:
+ NM_BUILD_TARBALL: 1
+ artifacts:
+ expire_in: 2 days
+ paths:
+ - docs-html
+ - NetworkManager-1*.tar.xz
+ - NetworkManager-1*.src.rpm
-.fedora_install: &fedora_install
- before_script:
-
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y glibc-common
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || localedef -c -i pl_PL -f UTF-8 pl_PL.UTF-8 && locale -a
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y python36-dbus python36-gobject-base
+.nm_artifacts_undo:
+ variables:
+ NM_BUILD_TARBALL: 0
+ artifacts:
+ paths: []
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf install -y 'dnf-command(config-manager)'
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf config-manager --set-enabled PowerTools
- - date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-8/nmstate-nm-build-deps-epel-8.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-8.repo
+#################################################################
+# #
+# containers stage #
+# #
+#################################################################
- - date '+%Y%m%d-%H%M%S'; NM_NO_EXTRA=1 NM_INSTALL="yum install -y" ./contrib/fedora/REQUIRED_PACKAGES
- - date '+%Y%m%d-%H%M%S'; yum install -y glibc-langpack-pl ccache clang which
+# Build a container for each distribution + version. The ci-templates
+# will re-use the containers if the tag doesn't change.
- # containers have "tsflags=nodocs" in /etc/dnf/dnf.conf. We need /usr/shared/gtk-doc/html
- # to generate proper documentation.
- - date '+%Y%m%d-%H%M%S'; yum reinstall -y --setopt='tsflags=' glib2-doc
+fedora:28@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '28'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:29@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '29'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:30@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '30'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:31@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '31'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:32@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '32'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:33@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '33'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+fedora:rawhide@container-prep:
+ extends:
+ - .fdo.container-build@fedora
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'rawhide'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ FDO_DISTRIBUTION_EXEC: $FEDORA_EXEC
+
+ubuntu:16.04@container-prep:
+ extends:
+ - .fdo.container-build@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '16.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
+
+ubuntu:18.04@container-prep:
+ extends:
+ - .fdo.container-build@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '18.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
+
+ubuntu:20.04@container-prep:
+ extends:
+ - .fdo.container-build@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '20.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
+
+ubuntu:devel@container-prep:
+ extends:
+ - .fdo.container-build@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'devel'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
+
+ubuntu:rolling@container-prep:
+ extends:
+ - .fdo.container-build@ubuntu
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'rolling'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ FDO_DISTRIBUTION_EXEC: $UBUNTU_EXEC
+
+debian:9@container-prep:
+ extends:
+ - .fdo.container-build@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '9'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC
+
+debian:10@container-prep:
+ extends:
+ - .fdo.container-build@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '10'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC
+
+debian:testing@container-prep:
+ extends:
+ - .fdo.container-build@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'testing'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC
+
+debian:sid@container-prep:
+ extends:
+ - .fdo.container-build@debian
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: 'sid'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ FDO_DISTRIBUTION_EXEC: $DEBIAN_EXEC
+
+centos:7.5.1804@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '7.5.1804'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:7.6.1810@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '7.6.1810'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:7.7.1908@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '7.7.1908'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:7.8.2003@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '7.8.2003'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:7.9.2009@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '7.9.2009'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:8.1.1911@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '8.1.1911'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+centos:8.2.2004@container-prep:
+ extends:
+ - .fdo.container-build@centos
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '8.2.2004'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ FDO_DISTRIBUTION_EXEC: $CENTOS_EXEC
+
+#################################################################
+# #
+# container clean stage #
+# run during the clean stage #
+# #
+#################################################################
+
+#
+# This stage will look for the container images we currently have in
+# the registry and will remove any that are not tagged with the provided
+# $container_image:$tag
+#
+# This job only runs for a scheduled pipeline.
+#
+# Go to your Profile, Settings, Access Tokens
+# Create a personal token with 'api' scope, copy the value.
+# Go to CI/CD, Schedules, schedule a monthly job.
+# Define a variable of type File named AUTHFILE. Content is that token
+# value.
+.container-clean:
+ stage: container_clean
+ image: golang:alpine
+ before_script:
+ - apk add python3 py-pip git
+ - pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
+ script:
+ - ci-fairy -v --authfile $AUTHFILE delete-image
+ --repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
+ --exclude-tag $FDO_DISTRIBUTION_TAG
+ dependencies: []
+ allow_failure: true
+ only:
+ - schedules
- - date '+%Y%m%d-%H%M%S'; ! which dnf || dnf install -y python3-dnf-plugins-core
- - date '+%Y%m%d-%H%M%S'; ! which dnf || dnf debuginfo-install -y glib2
- - date '+%Y%m%d-%H%M%S'; which dnf || debuginfo-install -y glib2
+fedora:28@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '28'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:29@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '29'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:30@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '30'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:31@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '31'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:32@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '32'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:33@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '33'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+fedora:rawhide@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'rawhide'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+
+ubuntu:16.04@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '16.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+
+ubuntu:18.04@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '18.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+
+ubuntu:20.04@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '20.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+
+ubuntu:devel@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'devel'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+
+ubuntu:rolling@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'rolling'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+
+debian:9@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '9'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+
+debian:10@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '10'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+
+debian:testing@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'testing'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+
+debian:sid@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: 'sid'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+
+centos:7.5.1804@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '7.5.1804'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:7.6.1810@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '7.6.1810'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:7.7.1908@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '7.7.1908'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:7.8.2003@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '7.8.2003'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:7.9.2009@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '7.9.2009'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:8.1.1911@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '8.1.1911'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+
+centos:8.2.2004@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '8.2.2004'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
- - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-ci-patch-gtkdoc.sh || true
- - date '+%Y%m%d-%H%M%S'; test -x /usr/bin/ninja || ! test -x /usr/bin/ninja-build || ln -s /usr/bin/ninja-build /usr/bin/ninja
+#################################################################
+# #
+# build stage #
+# #
+#################################################################
-.debian_install: &debian_install
- before_script:
- - date '+%Y%m%d-%H%M%S'; DEBIAN_FRONTEND=noninteractive apt-get update
- - date '+%Y%m%d-%H%M%S'; DEBIAN_FRONTEND=noninteractive NM_INSTALL="apt-get -qq install -y" ./contrib/debian/REQUIRED_PACKAGES
- - date '+%Y%m%d-%H%M%S'; dbus-uuidgen --ensure
- - date '+%Y%m%d-%H%M%S'; sed -i 's/^# \(pl_PL.UTF-8 .*\)$/\1/p' /etc/locale.gen ; true
- - date '+%Y%m%d-%H%M%S'; locale-gen pl_PL.UTF-8
- - date '+%Y%m%d-%H%M%S'; grep -q "VERSION=.16.04.[0-9]\+ LTS" /etc/os-release && pip3 install meson==0.53.2
- - date '+%Y%m%d-%H%M%S'; grep -q "VERSION=.16.04.[0-9]\+ LTS" /etc/os-release || pip3 install meson
- - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-ci-install-valgrind-in-ubuntu1604.sh
-
- # iproute2 5.2.0 on debian:sid causes our unit tests to fail.
- # Downgrade to a working version. See https://www.spinics.net/lists/netdev/msg584916.html
- - date '+%Y%m%d-%H%M%S'; ! ( dpkg -s iproute2 | grep -q '^Version[:] 5.2.0-1\(ubuntu1\)\?$' ) || (curl 'http://ftp.debian.org/debian/pool/main/i/iproute2/iproute2_4.20.0-2_amd64.deb' --output /tmp/iproute2_4.20.0-2_amd64.deb && dpkg -i /tmp/iproute2_4.20.0-2_amd64.deb)
-
-.do_build: &do_build
+.build@template:
stage: test
script:
- - date '+%Y%m%d-%H%M%S'; uname -a
- - date '+%Y%m%d-%H%M%S'; locale -a
- - date '+%Y%m%d-%H%M%S'; env
- - date '+%Y%m%d-%H%M%S'; meson --version
- - date '+%Y%m%d-%H%M%S'; ! which dpkg || dpkg -l
- - date '+%Y%m%d-%H%M%S'; ! which yum || yum list installed
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh
- - date '+%Y%m%d-%H%M%S'; rm -rf /tmp/nm-docs-html; mv build/INST/share/gtk-doc/html /tmp/nm-docs-html
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=autotools CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; ! grep -q '^NAME=.*\(Fedora\|CentOS\)' /etc/os-release || ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -W meson
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; ! grep -q '^NAME=.*\(Fedora\)' /etc/os-release || ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson
- - date '+%Y%m%d-%H%M%S'; git clean -fdx ; test "$NM_BUILD_TARBALL" != 1 || ( SIGN_SOURCE=0 ./contrib/fedora/rpm/build_clean.sh -r && mv ./NetworkManager-1*.tar.xz /tmp/ && mv ./contrib/fedora/rpm/latest/SRPMS/NetworkManager-1*.src.rpm /tmp/ )
- - date '+%Y%m%d-%H%M%S'; git clean -fdx
- - date '+%Y%m%d-%H%M%S'; mv /tmp/nm-docs-html ./docs-html
- - date '+%Y%m%d-%H%M%S'; test "$NM_BUILD_TARBALL" != 1 || mv /tmp/NetworkManager-1*.tar.xz /tmp/NetworkManager-1*.src.rpm ./
-
-checkpatch:
- image: fedora:33
- stage: test
- script:
- - date '+%Y%m%d-%H%M%S'; dnf install -y git black gettext /usr/bin/xargs which clang
- - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh
- - date '+%Y%m%d-%H%M%S'; black --check . examples/python/gi/nm-wg-set
- - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc
- - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh
- allow_failure: true
+ - .gitlab-ci/build.sh
+ dependencies: []
+
+#################################################################
+# #
+# test stage #
+# #
+#################################################################
+
t_fedora:28:
- <<: *fedora_install
- image: fedora:28
- <<: *do_build
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ variables:
+ FDO_DISTRIBUTION_VERSION: '28'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:28@container-prep"
when: manual
t_fedora:29:
- <<: *fedora_install
- image: fedora:29
- <<: *do_build
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ variables:
+ FDO_DISTRIBUTION_VERSION: '29'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:29@container-prep"
when: manual
t_fedora:30:
- <<: *fedora_install
- image: fedora:30
- <<: *do_build
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ variables:
+ FDO_DISTRIBUTION_VERSION: '30'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:30@container-prep"
when: manual
t_fedora:31:
- <<: *fedora_install
- image: fedora:31
- <<: *do_build
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ variables:
+ FDO_DISTRIBUTION_VERSION: '31'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:31@container-prep"
when: manual
t_fedora:32:
- <<: *fedora_install
- image: fedora:32
- <<: *do_build
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
variables:
- NM_BUILD_TARBALL: 1
- artifacts:
- expire_in: 2 days
- paths:
- - docs-html
- - NetworkManager-1*.tar.xz
- - NetworkManager-1*.src.rpm
+ FDO_DISTRIBUTION_VERSION: '32'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:32@container-prep"
+ when: manual
t_fedora:33:
- <<: *fedora_install
- image: fedora:33
- <<: *do_build
- when: manual
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ - .nm_artifacts
+ variables:
+ FDO_DISTRIBUTION_VERSION: '33'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:33@container-prep"
t_fedora:rawhide:
- <<: *fedora_install
- image: fedora:rawhide
- <<: *do_build
- allow_failure: true
+ extends:
+ - .build@template
+ - .fdo.distribution-image@fedora
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'rawhide'
+ FDO_DISTRIBUTION_TAG: $FEDORA_TAG
+ needs:
+ - "fedora:rawhide@container-prep"
when: manual
-t_centos:7.5.1804:
- <<: *fedora_install
- image: centos:7.5.1804
- <<: *do_build
+t_ubuntu:16.04:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_VERSION: '16.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ needs:
+ - "ubuntu:16.04@container-prep"
when: manual
-t_centos:7.6.1810:
- <<: *fedora_install
- image: centos:7.6.1810
- <<: *do_build
+t_ubuntu:18.04:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_VERSION: '18.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ needs:
+ - "ubuntu:18.04@container-prep"
when: manual
-t_centos:7.7.1908:
- <<: *fedora_install
- image: centos:7.7.1908
- <<: *do_build
+t_ubuntu:20.04:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_VERSION: '20.04'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ needs:
+ - "ubuntu:20.04@container-prep"
when: manual
-t_centos:7.8.2003:
- <<: *fedora_install
- image: centos:7.8.2003
- <<: *do_build
+t_ubuntu:devel:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'devel'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ needs:
+ - "ubuntu:devel@container-prep"
when: manual
-t_centos:8.1.1911:
- <<: *fedora_install
- image: centos:8.1.1911
- <<: *do_build
+t_ubuntu:rolling:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@ubuntu
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'rolling'
+ FDO_DISTRIBUTION_TAG: $UBUNTU_TAG
+ needs:
+ - "ubuntu:rolling@container-prep"
when: manual
-t_ubuntu:16.04:
- <<: *debian_install
- image: ubuntu:16.04
- <<: *do_build
+t_debian:9:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@debian
+ variables:
+ FDO_DISTRIBUTION_VERSION: '9'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ needs:
+ - "debian:9@container-prep"
when: manual
-t_ubuntu:18.04:
- <<: *debian_install
- image: ubuntu:18.04
- <<: *do_build
+t_debian:10:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@debian
+ variables:
+ FDO_DISTRIBUTION_VERSION: '10'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ needs:
+ - "debian:10@container-prep"
when: manual
-t_ubuntu:rolling:
- <<: *debian_install
- image: ubuntu:rolling
- <<: *do_build
+t_debian:testing:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@debian
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'testing'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ needs:
+ - "debian:testing@container-prep"
when: manual
-t_ubuntu:devel:
- <<: *debian_install
- image: ubuntu:devel
- <<: *do_build
+t_debian:sid:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@debian
+ variables:
+ FDO_DISTRIBUTION_VERSION: 'sid'
+ FDO_DISTRIBUTION_TAG: $DEBIAN_TAG
+ needs:
+ - "debian:sid@container-prep"
when: manual
-t_debian:9:
- <<: *debian_install
- image: debian:stretch
- <<: *do_build
+t_centos:7.5.1804:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '7.5.1804'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:7.5.1804@container-prep"
when: manual
-t_debian:10:
- <<: *debian_install
- image: debian:stretch
- <<: *do_build
+t_centos:7.6.1810:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '7.6.1810'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:7.6.1810@container-prep"
when: manual
-t_debian:testing:
- <<: *debian_install
- image: debian:testing
- <<: *do_build
+t_centos:7.7.1908:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '7.7.1908'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:7.7.1908@container-prep"
when: manual
-t_debian:sid:
- <<: *debian_install
- image: debian:sid
- <<: *do_build
+t_centos:7.8.2003:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '7.8.2003'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:7.8.2003@container-prep"
+ when: manual
+
+t_centos:7.9.2009:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '7.9.2009'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:7.9.2009@container-prep"
+ when: manual
+
+t_centos:8.1.1911:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '8.1.1911'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:8.1.1911@container-prep"
when: manual
+t_centos:8.2.2004:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@centos
+ variables:
+ FDO_DISTRIBUTION_VERSION: '8.2.2004'
+ FDO_DISTRIBUTION_TAG: $CENTOS_TAG
+ needs:
+ - "centos:8.2.2004@container-prep"
+ when: manual
+
+#################################################################
+# #
+# specific jobs #
+# #
+#################################################################
+
+check-patch:
+ extends:
+ - t_fedora:33
+ - .nm_artifacts_undo
+ stage: test
+ script:
+ - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh
+ allow_failure: true
+
+check-tree:
+ extends:
+ - t_fedora:33
+ - .nm_artifacts_undo
+ stage: test
+ script:
+ - date '+%Y%m%d-%H%M%S'; black --check . examples/python/gi/nm-wg-set
+ - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc
+ - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh
+ - date '+%Y%m%d-%H%M%S'; ci-fairy generate-template && git diff --exit-code
+
pages:
stage: deploy
- dependencies:
- - t_fedora:32
script:
- mv docs-html public
artifacts:
@@ -224,6 +855,10 @@ pages:
- public
only:
- master
+ dependencies:
+ - t_fedora:33
+ needs:
+ - t_fedora:33
triage:issues:
stage: triage
@@ -232,4 +867,4 @@ triage:issues:
- gem install gitlab-triage
- gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID
only:
- - schedules
+ - schedules \ No newline at end of file
diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh
new file mode 100755
index 0000000000..b3f6863582
--- /dev/null
+++ b/.gitlab-ci/build.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+set -ex
+
+IS_FEDORA=0
+IS_CENTOS=0
+grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1
+grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1
+
+do_clean() {
+ git clean -fdx
+}
+
+uname -a
+locale -a
+env
+meson --version
+
+! which dpkg || dpkg -l
+! which yum || yum list installed
+
+# The formatting depends on the version of python black.
+# We have a dedicated test that checks our formatting, which
+# uses the right version. We should disable the check during
+# `make check`.
+export NMTST_SKIP_PYTHON_BLACK=1
+
+do_clean; BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh
+rm -rf /tmp/nm-docs-html;
+mv build/INST/share/gtk-doc/html /tmp/nm-docs-html
+do_clean; BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh
+do_clean; BUILD_TYPE=autotools CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh
+do_clean; BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh
+
+do_clean; test $IS_FEDORA = 1 -o $IS_CENTOS = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -W meson
+do_clean; test $IS_FEDORA = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson
+
+do_clean
+if [ "$NM_BUILD_TARBALL" = 1 ]; then
+ SIGN_SOURCE=0 ./contrib/fedora/rpm/build_clean.sh -r
+ mv ./NetworkManager-1*.tar.xz /tmp/
+ mv ./contrib/fedora/rpm/latest/SRPMS/NetworkManager-1*.src.rpm /tmp/
+ do_clean
+ mv /tmp/nm-docs-html ./docs-html
+ mv /tmp/NetworkManager-1*.tar.xz /tmp/NetworkManager-1*.src.rpm ./
+fi
+
+echo "BUILD SUCCESSFUL!!"
diff --git a/.gitlab-ci/ci.template b/.gitlab-ci/ci.template
new file mode 100644
index 0000000000..aa5ed4327b
--- /dev/null
+++ b/.gitlab-ci/ci.template
@@ -0,0 +1,229 @@
+# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0 filetype=yaml:
+
+{# You're looking at the template here, so you can ignore the below
+ warning. This is the right file to edit #}
+########################################
+# #
+# THIS FILE IS GENERATED, DO NOT EDIT #
+# #
+########################################
+
+
+.templates_sha: &template_sha 766e3d77c647e404b349e398427e8965a1769b64 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+
+include:
+{% for distro in distributions|sort(attribute="name") %}
+ # {{ distro.name.capitalize() }} container builder template
+ - project: 'freedesktop/ci-templates'
+ ref: *template_sha
+ file: '/templates/{{distro.name}}.yml'
+{% endfor %}
+
+stages:
+ - prep
+ - test
+ - deploy
+ - triage
+ - container_clean
+
+variables:
+ FDO_UPSTREAM_REPO: NetworkManager/NetworkManager
+ GIT_DEPTH: 1
+ # these tags should be updated each time the list of packages is updated
+ # changing these will force rebuilding the associated image
+ # Note: these tags have no meaning and are not tied to a particular NM version
+{% for distro in distributions %}
+ {{"%-13s"| format(distro.name.upper() + '_TAG:')}}'{{distro.tag}}-{{
+ (ci_fairy.hashfiles('./.gitlab-ci/config.yml',
+ './.gitlab-ci/ci.template',
+ './.gitlab-ci/' + distro.base_type + '-install.sh',
+ './contrib/' + distro.base_type + '/REQUIRED_PACKAGES'))[0:12]
+ }}'
+{% endfor %}
+
+{% for distro in distributions %}
+ {{"%-13s"| format(distro.name.upper() + '_EXEC:')}}'bash .gitlab-ci/{{distro.base_type}}-install.sh'
+{% endfor %}
+
+.nm_artifacts:
+ variables:
+ NM_BUILD_TARBALL: 1
+ artifacts:
+ expire_in: 2 days
+ paths:
+ - docs-html
+ - NetworkManager-1*.tar.xz
+ - NetworkManager-1*.src.rpm
+
+.nm_artifacts_undo:
+ variables:
+ NM_BUILD_TARBALL: 0
+ artifacts:
+ paths: []
+
+#################################################################
+# #
+# containers stage #
+# #
+#################################################################
+
+# Build a container for each distribution + version. The ci-templates
+# will re-use the containers if the tag doesn't change.
+{% for distro in distributions %}
+{% for version in distro.versions %}
+
+{{distro.name}}:{{version}}@container-prep:
+ extends:
+ - .fdo.container-build@{{distro.name}}
+ stage: prep
+ variables:
+ GIT_STRATEGY: none
+ FDO_DISTRIBUTION_VERSION: '{{version}}'
+ FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
+ FDO_DISTRIBUTION_EXEC: ${{distro.name.upper()}}_EXEC
+{% endfor %}
+{% endfor %}
+
+#################################################################
+# #
+# container clean stage #
+# run during the clean stage #
+# #
+#################################################################
+
+#
+# This stage will look for the container images we currently have in
+# the registry and will remove any that are not tagged with the provided
+# $container_image:$tag
+#
+# This job only runs for a scheduled pipeline.
+#
+# Go to your Profile, Settings, Access Tokens
+# Create a personal token with 'api' scope, copy the value.
+# Go to CI/CD, Schedules, schedule a monthly job.
+# Define a variable of type File named AUTHFILE. Content is that token
+# value.
+.container-clean:
+ stage: container_clean
+ image: golang:alpine
+ before_script:
+ - apk add python3 py-pip git
+ - pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates
+ script:
+ - ci-fairy -v --authfile $AUTHFILE delete-image
+ --repository $FDO_DISTRIBUTION_NAME/$FDO_DISTRIBUTION_VERSION
+ --exclude-tag $FDO_DISTRIBUTION_TAG
+ dependencies: []
+ allow_failure: true
+ only:
+ - schedules
+
+{% for distro in distributions %}
+{% for version in distro.versions %}
+{{distro.name}}:{{version}}@container-clean:
+ extends:
+ - .container-clean
+ variables:
+ GIT_STRATEGY: none
+ CURRENT_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/{{distro.name}}/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG
+ FDO_DISTRIBUTION_VERSION: '{{version}}'
+ FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
+
+{% endfor %}
+{% endfor %}
+
+#################################################################
+# #
+# build stage #
+# #
+#################################################################
+
+.build@template:
+ stage: test
+ script:
+ - .gitlab-ci/build.sh
+ dependencies: []
+
+#################################################################
+# #
+# test stage #
+# #
+#################################################################
+
+{% for distro in distributions %}
+{% for version in distro.versions %}
+
+t_{{distro.name}}:{{version}}:
+ extends:
+ - .build@template
+ - .fdo.distribution-image@{{distro.name}}
+{% if distro.name == pages_build.name and
+ version == pages_build.version %}
+ - .nm_artifacts
+{% endif %}
+ variables:
+ FDO_DISTRIBUTION_VERSION: '{{version}}'
+ FDO_DISTRIBUTION_TAG: ${{distro.name.upper()}}_TAG
+ {# Where we have extra_variables defined, add them to the list #}
+ {% if distro.build is defined and distro.build.extra_variables is defined %}
+ {% for var in distro.build.extra_variables %}
+ {{var}}
+ {% endfor %}
+ {% endif %}
+ needs:
+ - "{{distro.name}}:{{version}}@container-prep"
+{% if not version in distro.always %}
+ when: manual
+{% endif %}
+{% endfor %}
+{% endfor %}
+
+#################################################################
+# #
+# specific jobs #
+# #
+#################################################################
+
+check-patch:
+ extends:
+ - t_{{pages_build.name}}:{{pages_build.version}}
+ - .nm_artifacts_undo
+ stage: test
+ script:
+ - date '+%Y%m%d-%H%M%S'; NM_CHECKPATCH_FETCH_UPSTREAM=1 contrib/scripts/checkpatch-feature-branch.sh
+ allow_failure: true
+
+check-tree:
+ extends:
+ - t_{{pages_build.name}}:{{pages_build.version}}
+ - .nm_artifacts_undo
+ stage: test
+ script:
+ - date '+%Y%m%d-%H%M%S'; black --check . examples/python/gi/nm-wg-set
+ - date '+%Y%m%d-%H%M%S'; git ls-files -z -- 'po/*.po' | xargs -0 -n1 msgfmt -vc
+ - date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-code-format.sh
+ - date '+%Y%m%d-%H%M%S'; ci-fairy generate-template && git diff --exit-code
+
+pages:
+ stage: deploy
+ script:
+ - mv docs-html public
+ artifacts:
+ expire_in: 20 days
+ paths:
+ - public
+ only:
+ - master
+ dependencies:
+ - t_{{pages_build.name}}:{{pages_build.version}}
+ needs:
+ - t_{{pages_build.name}}:{{pages_build.version}}
+
+triage:issues:
+ stage: triage
+ image: ruby:2.7
+ script:
+ - gem install gitlab-triage
+ - gitlab-triage -d --token $API_TOKEN --source-id $SOURCE_ID
+ only:
+ - schedules
diff --git a/.gitlab-ci/config.yml b/.gitlab-ci/config.yml
new file mode 100644
index 0000000000..201828379c
--- /dev/null
+++ b/.gitlab-ci/config.yml
@@ -0,0 +1,62 @@
+# This file contains the configuration for the gitlab ci.
+#
+# To recreate the .gitlab-ci.yml file, run
+# ci-fairy generate-template
+#
+# The ci-fairy tool is part of
+# https://gitlab.freedesktop.org/freedesktop/ci-templates
+#
+
+# We're happy to rebuild all containers when one changes.
+.default_tag: &default_tag '2020-11-17.0'
+
+
+# The list of all distributions we want to create job for.
+# The template generates manual jobs for all these.
+distributions:
+ - name: fedora
+ tag: *default_tag
+ base_type: fedora
+ versions:
+ - '28'
+ - '29'
+ - '30'
+ - '31'
+ - '32'
+ - '33'
+ - 'rawhide'
+ always:
+ - '33'
+ - name: ubuntu
+ tag: *default_tag
+ base_type: debian
+ versions:
+ - '16.04'
+ - '18.04'
+ - '20.04'
+ - 'devel'
+ - 'rolling'
+ - name: debian
+ tag: *default_tag
+ base_type: debian
+ versions:
+ - '9'
+ - '10'
+ - 'testing'
+ - 'sid'
+ - name: centos
+ tag: *default_tag
+ base_type: fedora
+ versions:
+ - '7.5.1804'
+ - '7.6.1810'
+ - '7.7.1908'
+ - '7.8.2003'
+ - '7.9.2009'
+ - '8.1.1911'
+ - '8.2.2004'
+
+# specifies which of the above distros is used as source for pages
+pages_build:
+ name: fedora
+ version: '33'
diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh
new file mode 100755
index 0000000000..575b127e0c
--- /dev/null
+++ b/.gitlab-ci/debian-install.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -ex
+
+IS_UBUNTU_1604=0
+grep -q '^VERSION=.16.04.[0-9]\+ LTS' /etc/os-release && IS_UBUNTU_1604=1
+
+
+DEBIAN_FRONTEND=noninteractive apt-get update
+DEBIAN_FRONTEND=noninteractive NM_INSTALL="apt-get -qq install -y" ./contrib/debian/REQUIRED_PACKAGES
+
+dbus-uuidgen --ensure
+
+sed -i 's/^# \(pl_PL.UTF-8 .*\)$/\1/p' /etc/locale.gen || true
+locale-gen pl_PL.UTF-8
+
+if [ $IS_UBUNTU_1604 = 1 ]; then
+ pip3 install meson==0.53.2
+ contrib/scripts/nm-ci-install-valgrind-in-ubuntu1604.sh
+else
+ pip3 install meson
+fi
+
+# iproute2 5.2.0 on debian:sid causes our unit tests to fail.
+# Downgrade to a working version. See https://www.spinics.net/lists/netdev/msg584916.html
+if dpkg -s iproute2 | grep -q '^Version[:] 5.2.0-1\(ubuntu1\)\?$' ; then
+ curl 'http://ftp.debian.org/debian/pool/main/i/iproute2/iproute2_4.20.0-2_amd64.deb' --output /tmp/iproute2_4.20.0-2_amd64.deb
+ dpkg -i /tmp/iproute2_4.20.0-2_amd64.deb
+fi
diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh
new file mode 100755
index 0000000000..12f6f73b5f
--- /dev/null
+++ b/.gitlab-ci/fedora-install.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+set -ex
+
+IS_FEDORA=0
+IS_CENTOS=0
+IS_CENTOS_7=0
+grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1
+grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1
+if [ $IS_CENTOS = 1 ]; then
+ grep -q '^VERSION_ID=.*\<7\>' /etc/os-release && IS_CENTOS_7=1
+fi
+
+if [ $IS_CENTOS = 1 ]; then
+ if [ $IS_CENTOS_7 = 1 ]; then
+ yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
+ yum install -y glibc-common
+ localedef -c -i pl_PL -f UTF-8 pl_PL.UTF-8
+ locale -a
+ yum install -y python36-dbus python36-gobject-base
+ else
+ dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
+ dnf install -y 'dnf-command(config-manager)'
+ dnf config-manager --set-enabled PowerTools
+ curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-8/nmstate-nm-build-deps-epel-8.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-8.repo
+ fi
+fi
+
+
+NM_NO_EXTRA=1 NM_INSTALL="yum install -y" ./contrib/fedora/REQUIRED_PACKAGES
+yum install -y glibc-langpack-pl ccache clang which
+
+# containers have "tsflags=nodocs" in /etc/dnf/dnf.conf. We need /usr/shared/gtk-doc/html
+# to generate proper documentation.
+yum reinstall -y --setopt='tsflags=' glib2-doc
+
+if which dnf &>/dev/null; then
+ dnf install -y python3-dnf-plugins-core
+ dnf debuginfo-install -y glib2
+else
+ debuginfo-install -y glib2
+fi
+
+contrib/scripts/nm-ci-patch-gtkdoc.sh || true
+
+if [ -x /usr/bin/ninja ] && ! [ -x /usr/bin/ninja-build ]; then
+ ln -s /usr/bin/ninja-build /usr/bin/ninja
+fi
+
+if [ $IS_FEDORA = 1 ]; then
+ TEMPLATE_SHA="$(sed -n 's/^.templates_sha: *\&template_sha *\([0-9a-f]\+\) .*/\1/p' ./.gitlab-ci/ci.template)"
+ test -n "$TEMPLATE_SHA"
+ dnf install -y python3-pip
+ pip3 install "git+http://gitlab.freedesktop.org/freedesktop/ci-templates@$TEMPLATE_SHA"
+fi
diff --git a/.mailmap b/.mailmap
index 518b3b1cb5..9195e79390 100644
--- a/.mailmap
+++ b/.mailmap
@@ -43,6 +43,7 @@ Matej UrbanÄiÄ <matej.urban@gmail.com> <mateju@svn.gnome.org>
Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> <mathieu-tl@ubuntu.com>
Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> <mathieu.tl@gmail.com>
Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> <mathieu@canonical.com>
+Matt Bernstein <matt@bernstein.org.uk>
Maxim Dziumanenko <dziumanenko@gmail.com> <mvd@mylinux.com.ua>
Maxim Dziumanenko <dziumanenko@gmail.com> <mvd@mylinux.ua>
Michael Biebl <biebl@debian.org> <mbiebl@debian.org>
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 57e68af9a8..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-language: c
-dist: xenial
-sudo: required
-compiler:
- - gcc
- - clang
-
-addons:
- apt:
- packages:
- - autoconf
- - automake
- - dbus
- - dbus-x11
- - dnsmasq
- - gobject-introspection
- - gtk-doc-tools
- - intltool
- - iptables
- - libcurl4-gnutls-dev
- - libdbus-1-dev
- - libgcrypt11-dev
- - libgirepository1.0-dev
- - libglib2.0-dev
- - libglib2.0-doc
- - libgnutls-dev
- - libiw-dev
- - libjansson-dev
- - libjansson4
- - libmm-glib-dev
- - libndp-dev
- - libnewt-dev
- - libnss3-dev
- - libpolkit-gobject-1-dev
- - libreadline-dev
- - libteam-dev
- - libtool
- - libudev-dev
- - make
- - mobile-broadband-provider-info
- - pkg-config
- - ppp
- - ppp-dev
- - python-dbus
- - python-gi
- - python-software-properties
- - python3-pip
- - python3-setuptools
- - uuid-dev
- coverity_scan:
- project:
- name: NetworkManager/NetworkManager
- build_command_prepend: sh autogen.sh --with-systemd-logind=no --enable-more-warnings=no --disable-ovs
- build_command: make -j4
- branch_pattern: .*coverity.*
-
-before_install:
- - sudo dbus-uuidgen --ensure
- - |
- if test "$BUILD_TYPE" == 'meson'; then
- pip3 install ninja
- pip3 install meson
- fi
- - sudo chmod o+x /usr/sbin/pppd
- - sudo locale-gen pl_PL.UTF-8
-
-script:
- - CI=travis contrib/scripts/nm-ci-run.sh
-
-env:
- matrix:
- - BUILD_TYPE=autotools
- - BUILD_TYPE=meson
- global:
- secure: K36MXkcsuDZ0msuEj5zHMmHfv6O725lsXuFdP6AJ3rYWKuLYE1+iNLgIRndNWDK9ckkNQFaCxDY4Z/NCfCYQTGAS9oXR5AwNqNbhOq8XrqdaZ2GX35sob8Tp4B3IsoREkN/UbIkXQKYlA5rUhgtSifUg3EwfeOiFvnLCwHcp0rYHnvT/jaq5vodBbA1jChjezcMHsp43kvPXHpybKRkipb9EzV/V3VtDLLWh9WQBvQNawpsHnT+MXSke1yU1zfNMyD9XiD7VDzCwaTs6LzjoFBLc86QS5U/9W72s0rFe6SbecntQHftknRzSrGiJDNe64wDZN/Wxq1MHxEOFCwDi6vcSwQ+RoTdhyshhfPVY2Mm5soj2w7Dx43Cz0dDZDCMhu5xxzFAFgkieJSfwXbuxga0ds58Ph8MgtDSp3fBRewZwI+vMuzl7a1hGkcqJojrm1lfgAKbNgrNUzQRwbVYAyrpa6/vCbd6ZH4PEtITwLaRf2mz8PG71xiMQguDDDXS8WF0U7Looe+G9ybAUwDS5hqHfeP+3q6bfN5Sg5Zs5QkBIN5LZbeWbPYldOEEDTvo3VI7e84bk7U5qEoUKc0w/tqVF1B5KgNUq6nIkCkmoBx8RFnmjpOHh99IfeRG9nQTRpCaEDvAM4fcRzITzId8dIIfAW/45P3ozzfz/HYiie+o=
diff --git a/CONTRIBUTING b/CONTRIBUTING
index c157614e07..8335cbfdf6 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -1,32 +1,51 @@
Guidelines for Contributing
===========================
+
Coding Standard
---------------
-* The formatting uses clang-format with clang 11.0. Run
- `./contrib/scripts/nm-code-format.sh -i` to reformat.
+The formatting uses clang-format with clang 11.0. Run
+`./contrib/scripts/nm-code-format.sh -i` to reformat the code
+or call `clang-format` yourself.
+You may also call `./contrib/scripts/nm-code-format-container.sh`
+which runs a Fedora 33 container using podman.
+You are welcome to not bother and open a merge request with
+wrong formatting, but note that we then will automatically adjust
+your contribution before merging.
+
+The automatic reformatting was done by commit 328fb90f3e0d4e35975aff63944ac0412d7893a5.
+Use `--ignore-rev` option or `--ignore-revs-file .git-blame-ignore-revs` to ignore
+the reformatting commit with git-blame:
+
+```
+$ git config --add 'blame.ignoreRevsFile' '.git-blame-ignore-revs'
+```
+
+Since our coding style is entirely automated, the following are just
+some details of the style we use:
* Indent with 4 spaces. (_no_ tabs).
* Have no space between the function name and the opening '('.
- GOOD: g_strdup(x)
- BAD: g_strdup (x)
+ - GOOD: `g_strdup(x)`
+ - BAD: `g_strdup (x)`
* C-style comments
- GOOD: f(x); /* comment */
- BAD: f(x); // comment
+ - GOOD: `f(x); /* comment */`
+ - BAD: `f(x); // comment`
* Keep assignments in the variable declaration area pretty short.
- GOOD: MyObject *object;
- BAD: MyObject *object = complex_and_long_init_function(arg1, arg2, arg3);
+ - GOOD: `MyObject *object;`
+ - BAD: `MyObject *object = complex_and_long_init_function(arg1, arg2, arg3);`
* 80-cols is a guideline, don't make the code uncomfortable in order to fit in
less than 80 cols.
* Constants are CAPS_WITH_UNDERSCORES and use the preprocessor.
- GOOD: #define MY_CONSTANT 42
- BAD: static const unsigned myConstant = 42;
+ - GOOD: `#define MY_CONSTANT 42`
+ - BAD: `static const unsigned myConstant = 42;`
+
Legal
-----
@@ -40,6 +59,8 @@ Note that all new contributions to NetworkManager MUST be made under terms of
LGPL-2.1+, that is also the case for parts that are currently licensed GPL-2.0+.
The reason for that is that we might eventually relicense everything as LGPL and
new contributions already must agree with that future change.
+For more details see [RELICENSE.md](RELICENSE.md).
+
Assertions in NetworkManager code
---------------------------------
@@ -125,15 +146,21 @@ The notes it are called "refs/notes/bugs".
So configure:
- $ git config --add 'remote.origin.fetch' 'refs/notes/bugs:refs/notes/bugs'
- $ git config --add 'notes.displayref' 'refs/notes/bugs'
+```
+$ git config --add 'remote.origin.fetch' 'refs/notes/bugs:refs/notes/bugs'
+$ git config --add 'notes.displayref' 'refs/notes/bugs'
+```
For example, set notes with
- $ git notes --ref refs/notes/bugs add -m "(cherry picked from $COMMIT_SHA)" HEAD
+```
+$ git notes --ref refs/notes/bugs add -m "(cherry picked from $COMMIT_SHA)" HEAD
+```
You should see the notes in git-log output as well.
To resync our local notes use:
- $ git fetch origin refs/notes/bugs:refs/notes/bugs -f
+```
+$ git fetch origin refs/notes/bugs:refs/notes/bugs -f
+```
diff --git a/Makefile.am b/Makefile.am
index 829f57513c..0ea43de987 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -928,6 +928,7 @@ libnm_core_lib_h_pub_real = \
libnm-core/nm-core-types.h \
libnm-core/nm-dbus-interface.h \
libnm-core/nm-errors.h \
+ libnm-core/nm-keyfile.h \
libnm-core/nm-setting-6lowpan.h \
libnm-core/nm-setting-8021x.h \
libnm-core/nm-setting-adsl.h \
@@ -942,6 +943,7 @@ libnm_core_lib_h_pub_real = \
libnm-core/nm-setting-ethtool.h \
libnm-core/nm-setting-generic.h \
libnm-core/nm-setting-gsm.h \
+ libnm-core/nm-setting-hostname.h \
libnm-core/nm-setting-infiniband.h \
libnm-core/nm-setting-ip-config.h \
libnm-core/nm-setting-ip-tunnel.h \
@@ -953,6 +955,7 @@ libnm_core_lib_h_pub_real = \
libnm-core/nm-setting-olpc-mesh.h \
libnm-core/nm-setting-ovs-bridge.h \
libnm-core/nm-setting-ovs-dpdk.h \
+ libnm-core/nm-setting-ovs-external-ids.h \
libnm-core/nm-setting-ovs-interface.h \
libnm-core/nm-setting-ovs-patch.h \
libnm-core/nm-setting-ovs-port.h \
@@ -966,6 +969,7 @@ libnm_core_lib_h_pub_real = \
libnm-core/nm-setting-team.h \
libnm-core/nm-setting-tun.h \
libnm-core/nm-setting-user.h \
+ libnm-core/nm-setting-veth.h \
libnm-core/nm-setting-vlan.h \
libnm-core/nm-setting-vpn.h \
libnm-core/nm-setting-vrf.h \
@@ -1015,6 +1019,7 @@ libnm_core_lib_c_settings_real = \
libnm-core/nm-setting-ethtool.c \
libnm-core/nm-setting-generic.c \
libnm-core/nm-setting-gsm.c \
+ libnm-core/nm-setting-hostname.c \
libnm-core/nm-setting-infiniband.c \
libnm-core/nm-setting-ip-config.c \
libnm-core/nm-setting-ip-tunnel.c \
@@ -1026,6 +1031,7 @@ libnm_core_lib_c_settings_real = \
libnm-core/nm-setting-olpc-mesh.c \
libnm-core/nm-setting-ovs-bridge.c \
libnm-core/nm-setting-ovs-dpdk.c \
+ libnm-core/nm-setting-ovs-external-ids.c \
libnm-core/nm-setting-ovs-interface.c \
libnm-core/nm-setting-ovs-patch.c \
libnm-core/nm-setting-ovs-port.c \
@@ -1039,6 +1045,7 @@ libnm_core_lib_c_settings_real = \
libnm-core/nm-setting-team.c \
libnm-core/nm-setting-tun.c \
libnm-core/nm-setting-user.c \
+ libnm-core/nm-setting-veth.c \
libnm-core/nm-setting-vlan.c \
libnm-core/nm-setting-vpn.c \
libnm-core/nm-setting-vrf.c \
@@ -1358,6 +1365,7 @@ libnm_lib_h_pub_real = \
libnm/nm-device-ppp.h \
libnm/nm-device-team.h \
libnm/nm-device-tun.h \
+ libnm/nm-device-veth.h \
libnm/nm-device-vlan.h \
libnm/nm-device-vrf.h \
libnm/nm-device-vxlan.h \
@@ -1422,6 +1430,7 @@ libnm_lib_c_real = \
libnm/nm-device-ppp.c \
libnm/nm-device-team.c \
libnm/nm-device-tun.c \
+ libnm/nm-device-veth.c \
libnm/nm-device-vlan.c \
libnm/nm-device-vrf.c \
libnm/nm-device-vxlan.c \
@@ -1484,6 +1493,7 @@ nodist_libnm_liblibnm_la_SOURCES = \
libnm_liblibnm_la_LIBADD = \
libnm-core/nm-libnm-core-aux/libnm-libnm-core-aux.la \
+ libnm-core/nm-keyfile/libnm-keyfile.la \
libnm-core/libnm-core.la \
$(libnm_crypto_lib) \
libnm-core/nm-libnm-core-intern/libnm-libnm-core-intern.la \
@@ -1577,6 +1587,7 @@ libnm_NM_1_0_gir_FILES = \
$(libnm_core_lib_c_real) \
$(libnm_lib_h_pub_mkenums) \
$(libnm_lib_h_pub_real) \
+ libnm-core/nm-keyfile/nm-keyfile.c \
$(libnm_lib_c_mkenums) \
$(libnm_lib_c_real)
libnm_NM_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NM --symbol-prefix=nm
@@ -1599,8 +1610,20 @@ libnm_noinst_data = \
noinst_DATA += $(libnm_noinst_data)
+EXTRA_DIST += clients/cli/generate-docs-nm-settings-nmcli.xml.in
+
+if BUILD_DOCS
clients/cli/generate-docs-nm-settings-nmcli.xml: clients/cli/generate-docs-nm-settings-nmcli
- $(AM_V_GEN) clients/cli/generate-docs-nm-settings-nmcli > $@
+ $(AM_V_GEN) clients/cli/generate-docs-nm-settings-nmcli > "$@"
+check-local-generate-docs-nm-settings-nmcli: clients/cli/generate-docs-nm-settings-nmcli.xml
+ $(srcdir)/tools/check-compare-generated.sh "$(srcdir)" "$(builddir)" "$<"
+check_local += check-local-generate-docs-nm-settings-nmcli
+DISTCLEANFILES += clients/cli/generate-docs-nm-settings-nmcli.xml
+else
+clients/cli/generate-docs-nm-settings-nmcli.xml: clients/cli/generate-docs-nm-settings-nmcli.xml.in
+ $(AM_V_GEN) cp $^ $@
+check-local-generate-docs-nm-settings-nmcli:
+endif
libnm_docs_sources = $(libnm_core_lib_c_settings_real)
@@ -2128,6 +2151,8 @@ src_libNetworkManagerBase_la_SOURCES = \
src/nm-netns.h \
src/nm-l3-config-data.c \
src/nm-l3-config-data.h \
+ src/nm-l3-ipv4ll.c \
+ src/nm-l3-ipv4ll.h \
src/nm-l3cfg.c \
src/nm-l3cfg.h \
src/nm-ip-config.c \
@@ -4448,12 +4473,12 @@ $(clients_common_libnmc_base_la_OBJECTS): $(libnm_lib_h_pub_mkenums)
$(clients_common_libnmc_base_la_OBJECTS): clients/common/.dirstamp
clients_common_settings_doc_h = clients/common/settings-docs.h
-if HAVE_INTROSPECTION
+if BUILD_DOCS
$(clients_common_settings_doc_h): clients/common/settings-docs.xsl libnm/nm-settings-docs-gir.xml clients/common/.dirstamp
$(AM_V_GEN) $(XSLTPROC) --output $@ $< $(word 2,$^)
DISTCLEANFILES += $(clients_common_settings_doc_h)
check-local-settings-docs: $(clients_common_settings_doc_h)
- $(srcdir)/tools/check-settings-docs.sh "$(srcdir)" "$(builddir)" "$(clients_common_settings_doc_h)"
+ $(srcdir)/tools/check-compare-generated.sh "$(srcdir)" "$(builddir)" "$(clients_common_settings_doc_h)"
check_local += check-local-settings-docs
else
$(clients_common_settings_doc_h): $(clients_common_settings_doc_h).in clients/common/.dirstamp
@@ -4992,6 +5017,11 @@ EXTRA_DIST += \
clients/tests/test-client.check-on-disk/test_004.expected \
$(NULL)
+check-local-gitlab-ci:
+ "$(srcdir)/tools/check-gitlab-ci.sh" "$(srcdir)"
+
+check_local += check-local-gitlab-ci
+
###############################################################################
# data
###############################################################################
@@ -5280,7 +5310,8 @@ EXTRA_DIST += \
tools/check-config-options.sh \
tools/check-docs.sh \
tools/check-exports.sh \
- tools/check-settings-docs.sh \
+ tools/check-compare-generated.sh \
+ tools/check-gitlab-ci.sh \
tools/create-exports-NetworkManager.sh \
tools/debug-helper.py \
tools/meson-post-install.sh \
diff --git a/Makefile.examples b/Makefile.examples
index 385a8353ed..3cb46293bb 100644
--- a/Makefile.examples
+++ b/Makefile.examples
@@ -178,8 +178,10 @@ EXTRA_DIST += \
examples/python/gi/list-connections.py \
examples/python/gi/nm-add-connection2.py \
examples/python/gi/nm-connection-update-stable-id.py \
+ examples/python/gi/nm-keyfile.py \
examples/python/gi/nm-update2.py \
examples/python/gi/nm-wg-set \
+ examples/python/gi/ovs-external-ids.py \
examples/python/gi/setting-user-data.py \
examples/python/gi/show-wifi-networks.py \
examples/python/gi/update-ip4-method.py \
diff --git a/NEWS b/NEWS
index 8a48587e5e..292c140f6d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,23 @@
=============================================
-NetworkManager-1.28
-Overview of changes since NetworkManager-1.26
+NetworkManager-1.30
+Overview of changes since NetworkManager-1.28
=============================================
-This is a snapshot of NetworkManager 1.28 development series.
+This is a snapshot of NetworkManager 1.30 development series.
The API is subject to change and not guaranteed to be compatible
with the later release.
USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
+* libnm: nm_setting_bond_add_option() no longer validates the
+ option that is set. Instead, use nm_connection_verify() to validate
+ the profile.
+* Increase timeout of NetworkManager-wait-online.service to 60 seconds.
+
+=============================================
+NetworkManager-1.28
+Overview of changes since NetworkManager-1.26
+=============================================
+
* Introduce a new "rc-manager=auto" setting and make it the default,
unless a different default is chosen at compile time. This mode
tries to detect "systemd-resolved", "resolvconf", and "netconfig"
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index 3714485a16..5b8929b997 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -858,30 +858,31 @@ const NmcMetaGenericInfo
/*****************************************************************************/
-#define NMC_FIELDS_SETTINGS_NAMES_ALL \
- NM_SETTING_CONNECTION_SETTING_NAME \
- "," NM_SETTING_MATCH_SETTING_NAME "," NM_SETTING_WIRED_SETTING_NAME \
- "," NM_SETTING_802_1X_SETTING_NAME "," NM_SETTING_WIRELESS_SETTING_NAME \
- "," NM_SETTING_WIRELESS_SECURITY_SETTING_NAME "," NM_SETTING_IP4_CONFIG_SETTING_NAME \
- "," NM_SETTING_IP6_CONFIG_SETTING_NAME "," NM_SETTING_SERIAL_SETTING_NAME \
- "," NM_SETTING_WIFI_P2P_SETTING_NAME "," NM_SETTING_PPP_SETTING_NAME \
- "," NM_SETTING_PPPOE_SETTING_NAME "," NM_SETTING_ADSL_SETTING_NAME \
- "," NM_SETTING_GSM_SETTING_NAME "," NM_SETTING_CDMA_SETTING_NAME \
- "," NM_SETTING_BLUETOOTH_SETTING_NAME "," NM_SETTING_OLPC_MESH_SETTING_NAME \
- "," NM_SETTING_VPN_SETTING_NAME "," NM_SETTING_INFINIBAND_SETTING_NAME \
- "," NM_SETTING_BOND_SETTING_NAME "," NM_SETTING_VLAN_SETTING_NAME \
- "," NM_SETTING_BRIDGE_SETTING_NAME "," NM_SETTING_BRIDGE_PORT_SETTING_NAME \
- "," NM_SETTING_TEAM_SETTING_NAME "," NM_SETTING_TEAM_PORT_SETTING_NAME \
- "," NM_SETTING_OVS_BRIDGE_SETTING_NAME "," NM_SETTING_OVS_INTERFACE_SETTING_NAME \
- "," NM_SETTING_OVS_PATCH_SETTING_NAME "," NM_SETTING_OVS_PORT_SETTING_NAME \
- "," NM_SETTING_DCB_SETTING_NAME "," NM_SETTING_TUN_SETTING_NAME \
- "," NM_SETTING_IP_TUNNEL_SETTING_NAME "," NM_SETTING_MACSEC_SETTING_NAME \
- "," NM_SETTING_MACVLAN_SETTING_NAME "," NM_SETTING_VXLAN_SETTING_NAME \
- "," NM_SETTING_VRF_SETTING_NAME "," NM_SETTING_WPAN_SETTING_NAME \
- "," NM_SETTING_6LOWPAN_SETTING_NAME "," NM_SETTING_WIREGUARD_SETTING_NAME \
- "," NM_SETTING_PROXY_SETTING_NAME "," NM_SETTING_TC_CONFIG_SETTING_NAME \
- "," NM_SETTING_SRIOV_SETTING_NAME "," NM_SETTING_ETHTOOL_SETTING_NAME \
- "," NM_SETTING_OVS_DPDK_SETTING_NAME /* NM_SETTING_DUMMY_SETTING_NAME NM_SETTING_WIMAX_SETTING_NAME */
+#define NMC_FIELDS_SETTINGS_NAMES_ALL \
+ NM_SETTING_CONNECTION_SETTING_NAME \
+ "," NM_SETTING_MATCH_SETTING_NAME "," NM_SETTING_WIRED_SETTING_NAME \
+ "," NM_SETTING_VETH_SETTING_NAME "," NM_SETTING_802_1X_SETTING_NAME \
+ "," NM_SETTING_WIRELESS_SETTING_NAME "," NM_SETTING_WIRELESS_SECURITY_SETTING_NAME \
+ "," NM_SETTING_IP4_CONFIG_SETTING_NAME "," NM_SETTING_IP6_CONFIG_SETTING_NAME \
+ "," NM_SETTING_SERIAL_SETTING_NAME "," NM_SETTING_WIFI_P2P_SETTING_NAME \
+ "," NM_SETTING_PPP_SETTING_NAME "," NM_SETTING_PPPOE_SETTING_NAME \
+ "," NM_SETTING_ADSL_SETTING_NAME "," NM_SETTING_GSM_SETTING_NAME \
+ "," NM_SETTING_CDMA_SETTING_NAME "," NM_SETTING_BLUETOOTH_SETTING_NAME \
+ "," NM_SETTING_OLPC_MESH_SETTING_NAME "," NM_SETTING_VPN_SETTING_NAME \
+ "," NM_SETTING_INFINIBAND_SETTING_NAME "," NM_SETTING_BOND_SETTING_NAME \
+ "," NM_SETTING_VLAN_SETTING_NAME "," NM_SETTING_BRIDGE_SETTING_NAME \
+ "," NM_SETTING_BRIDGE_PORT_SETTING_NAME "," NM_SETTING_TEAM_SETTING_NAME \
+ "," NM_SETTING_TEAM_PORT_SETTING_NAME "," NM_SETTING_OVS_BRIDGE_SETTING_NAME \
+ "," NM_SETTING_OVS_INTERFACE_SETTING_NAME "," NM_SETTING_OVS_PATCH_SETTING_NAME \
+ "," NM_SETTING_OVS_PORT_SETTING_NAME "," NM_SETTING_DCB_SETTING_NAME \
+ "," NM_SETTING_TUN_SETTING_NAME "," NM_SETTING_IP_TUNNEL_SETTING_NAME \
+ "," NM_SETTING_MACSEC_SETTING_NAME "," NM_SETTING_MACVLAN_SETTING_NAME \
+ "," NM_SETTING_VXLAN_SETTING_NAME "," NM_SETTING_VRF_SETTING_NAME \
+ "," NM_SETTING_WPAN_SETTING_NAME "," NM_SETTING_6LOWPAN_SETTING_NAME \
+ "," NM_SETTING_WIREGUARD_SETTING_NAME "," NM_SETTING_PROXY_SETTING_NAME \
+ "," NM_SETTING_TC_CONFIG_SETTING_NAME "," NM_SETTING_SRIOV_SETTING_NAME \
+ "," NM_SETTING_ETHTOOL_SETTING_NAME "," NM_SETTING_OVS_DPDK_SETTING_NAME \
+ "," NM_SETTING_HOSTNAME_SETTING_NAME /* NM_SETTING_DUMMY_SETTING_NAME NM_SETTING_WIMAX_SETTING_NAME */
const NmcMetaGenericInfo *const nmc_fields_con_active_details_groups[] = {
NMC_META_GENERIC_WITH_NESTED("GENERAL", metagen_con_active_general), /* 0 */
@@ -1102,7 +1103,7 @@ usage_connection_add(void)
" mode vepa|bridge|private|passthru|source\n"
" [tap yes|no]\n\n"
" vxlan: id <VXLAN ID>\n"
- " remote <IP of multicast group or remote address>\n"
+ " [remote <IP of multicast group or remote address>]\n"
" [local <source IP>]\n"
" [dev <parent device (ifname or connection UUID)>]\n"
" [source-port-min <0-65535>]\n"
@@ -4957,6 +4958,10 @@ nmc_process_connection_properties(NmCli * nmc,
const char * option;
const char * value = NULL;
const char * tmp;
+ const NMMetaAbstractInfo * chosen = NULL;
+ const char * chosen_setting_name = NULL;
+ const char * chosen_option = NULL;
+ NMMetaSettingType s;
if (!con_settings(connection, &type_settings, &slv_settings, error))
return FALSE;
@@ -5020,25 +5025,24 @@ nmc_process_connection_properties(NmCli * nmc,
ss = is_setting_valid(connection, type_settings, slv_settings, setting_name);
if (!ss) {
- if (check_valid_name(setting_name, type_settings, slv_settings, NULL)) {
- g_set_error(error,
- NMCLI_ERROR,
- NMC_RESULT_ERROR_USER_INPUT,
- _("Setting '%s' is not present in the connection."),
- setting_name);
- } else {
+ if (!check_valid_name(setting_name, type_settings, slv_settings, NULL)) {
g_set_error(error,
NMCLI_ERROR,
NMC_RESULT_ERROR_USER_INPUT,
_("Error: invalid setting argument '%s'."),
setting_name);
+ return FALSE;
}
- return FALSE;
+ continue;
}
if (!connection_remove_setting(connection, ss, error))
return FALSE;
- } else if ((tmp = strchr(option, '.'))) {
+
+ continue;
+ }
+
+ if ((tmp = strchr(option, '.'))) {
gs_free char *option_sett = g_strndup(option, tmp - option);
const char * option_prop = &tmp[1];
const char * option_sett_expanded;
@@ -5081,58 +5085,35 @@ nmc_process_connection_properties(NmCli * nmc,
modifier,
error))
return FALSE;
- } else {
- const NMMetaAbstractInfo *chosen = NULL;
- const char * chosen_setting_name = NULL;
- const char * chosen_option = NULL;
- NMMetaSettingType s;
-
- /* Let's see if this is an property alias (such as "id", "mode", "type" or "con-name")*/
- for (s = 0; s < _NM_META_SETTING_TYPE_NUM; s++) {
- const NMMetaPropertyInfo *const *property_infos;
- guint p;
-
- if (!check_valid_name(nm_meta_setting_infos[s].setting_name,
- type_settings,
- slv_settings,
- NULL))
- continue;
- property_infos = nm_meta_setting_infos_editor[s].properties;
- if (!property_infos)
- continue;
- for (p = 0; property_infos[p]; p++) {
- const NMMetaPropertyInfo *property_info = property_infos[p];
-
- if (_meta_property_needs_bond_hack(property_info)) {
- guint i;
-
- for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) {
- const NMMetaNestedPropertyInfo *bi =
- &nm_meta_property_typ_data_bond.nested[i];
-
- if (!nm_streq0(bi->base.property_alias, option))
- continue;
- if (chosen) {
- g_set_error(error,
- NMCLI_ERROR,
- NMC_RESULT_ERROR_USER_INPUT,
- _("Error: '%s' is ambiguous (%s.%s or %s.%s)."),
- option,
- chosen_setting_name,
- chosen_option,
- nm_meta_setting_infos[s].setting_name,
- option);
- return FALSE;
- }
- chosen_setting_name = nm_meta_setting_infos[s].setting_name;
- chosen_option = option;
- chosen = (const NMMetaAbstractInfo *) bi;
- }
- } else {
- if (!property_info->is_cli_option)
- continue;
- if (!nm_streq0(property_info->property_alias, option))
+ continue;
+ }
+
+ /* Let's see if this is an property alias (such as "id", "mode", "type" or "con-name")*/
+ for (s = 0; s < _NM_META_SETTING_TYPE_NUM; s++) {
+ const NMMetaPropertyInfo *const *property_infos;
+ guint p;
+
+ if (!check_valid_name(nm_meta_setting_infos[s].setting_name,
+ type_settings,
+ slv_settings,
+ NULL))
+ continue;
+
+ property_infos = nm_meta_setting_infos_editor[s].properties;
+ if (!property_infos)
+ continue;
+ for (p = 0; property_infos[p]; p++) {
+ const NMMetaPropertyInfo *property_info = property_infos[p];
+
+ if (_meta_property_needs_bond_hack(property_info)) {
+ guint i;
+
+ for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) {
+ const NMMetaNestedPropertyInfo *bi =
+ &nm_meta_property_typ_data_bond.nested[i];
+
+ if (!nm_streq0(bi->base.property_alias, option))
continue;
if (chosen) {
g_set_error(error,
@@ -5148,39 +5129,60 @@ nmc_process_connection_properties(NmCli * nmc,
}
chosen_setting_name = nm_meta_setting_infos[s].setting_name;
chosen_option = option;
- chosen = (const NMMetaAbstractInfo *) property_info;
+ chosen = (const NMMetaAbstractInfo *) bi;
}
+ } else {
+ if (!property_info->is_cli_option)
+ continue;
+ if (!nm_streq0(property_info->property_alias, option))
+ continue;
+ if (chosen) {
+ g_set_error(error,
+ NMCLI_ERROR,
+ NMC_RESULT_ERROR_USER_INPUT,
+ _("Error: '%s' is ambiguous (%s.%s or %s.%s)."),
+ option,
+ chosen_setting_name,
+ chosen_option,
+ nm_meta_setting_infos[s].setting_name,
+ option);
+ return FALSE;
+ }
+ chosen_setting_name = nm_meta_setting_infos[s].setting_name;
+ chosen_option = option;
+ chosen = (const NMMetaAbstractInfo *) property_info;
}
}
+ }
- if (!chosen) {
- if (*argc == 1 && nmc->complete) {
- if (allow_setting_removal && g_str_has_prefix("remove", option))
- g_print("remove\n");
- complete_property_name(nmc, connection, modifier, option, NULL);
- }
- g_set_error(error,
- NMCLI_ERROR,
- NMC_RESULT_ERROR_USER_INPUT,
- _("Error: invalid <setting>.<property> '%s'."),
- option);
- return FALSE;
+ if (!chosen) {
+ if (*argc == 1 && nmc->complete) {
+ if (allow_setting_removal && g_str_has_prefix("remove", option))
+ g_print("remove\n");
+ complete_property_name(nmc, connection, modifier, option, NULL);
}
+ g_set_error(error,
+ NMCLI_ERROR,
+ NMC_RESULT_ERROR_USER_INPUT,
+ _("Error: invalid <setting>.<property> '%s'."),
+ option);
+ return FALSE;
+ }
- if (*argc == 1 && nmc->complete)
- complete_property_name(nmc, connection, modifier, option, NULL);
+ if (*argc == 1 && nmc->complete)
+ complete_property_name(nmc, connection, modifier, option, NULL);
- (*argc)--;
- (*argv)++;
- if (!get_value(&value, argc, argv, option_orig, error))
- return FALSE;
+ (*argc)--;
+ (*argv)++;
+ if (!get_value(&value, argc, argv, option_orig, error))
+ return FALSE;
- if (!*argc && nmc->complete)
- complete_option(nmc, chosen, value ?: "", connection);
+ if (!*argc && nmc->complete)
+ complete_option(nmc, chosen, value ?: "", connection);
+
+ if (!set_option(nmc, connection, chosen, value, error))
+ return FALSE;
- if (!set_option(nmc, connection, chosen, value, error))
- return FALSE;
- }
} while (*argc);
return TRUE;
diff --git a/clients/cli/generate-docs-nm-settings-nmcli.xml.in b/clients/cli/generate-docs-nm-settings-nmcli.xml.in
new file mode 100644
index 0000000000..1d1a09ba4a
--- /dev/null
+++ b/clients/cli/generate-docs-nm-settings-nmcli.xml.in
@@ -0,0 +1,1125 @@
+<nm-setting-docs>
+ <setting name="6lowpan" >
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID from which this 6LowPAN interface should be created." />
+ </setting>
+ <setting name="802-11-olpc-mesh"
+ alias="olpc-mesh" >
+ <property name="ssid"
+ alias="ssid"
+ description="SSID of the mesh network to join." />
+ <property name="channel"
+ alias="channel"
+ description="Channel on which the mesh network to join is located." />
+ <property name="dhcp-anycast-address"
+ alias="dhcp-anycast"
+ description="Anycast DHCP MAC address used when requesting an IP address via DHCP. The specific anycast address used determines which DHCP server class answers the request." />
+ </setting>
+ <setting name="802-11-wireless"
+ alias="wifi" >
+ <property name="ssid"
+ alias="ssid"
+ description="SSID of the Wi-Fi network. Must be specified." />
+ <property name="mode"
+ alias="mode"
+ description="Wi-Fi network mode; one of &quot;infrastructure&quot;, &quot;mesh&quot;, &quot;adhoc&quot; or &quot;ap&quot;. If blank, infrastructure is assumed." />
+ <property name="band"
+ description="802.11 frequency band of the network. One of &quot;a&quot; for 5GHz 802.11a or &quot;bg&quot; for 2.4GHz 802.11. This will lock associations to the Wi-Fi network to the specific band, i.e. if &quot;a&quot; is specified, the device will not associate with the same network in the 2.4GHz band even if the network&apos;s settings are compatible. This setting depends on specific driver capability and may not work with all drivers." />
+ <property name="channel"
+ description="Wireless channel to use for the Wi-Fi connection. The device will only join (or create for Ad-Hoc networks) a Wi-Fi network on the specified channel. Because channel numbers overlap between bands, this property also requires the &quot;band&quot; property to be set." />
+ <property name="bssid"
+ description="If specified, directs the device to only associate with the given access point. This capability is highly driver dependent and not supported by all devices. Note: this property does not control the BSSID used when creating an Ad-Hoc network and is unlikely to in the future." />
+ <property name="rate"
+ description="If non-zero, directs the device to only use the specified bitrate for communication with the access point. Units are in Kb/s, ie 5500 = 5.5 Mbit/s. This property is highly driver dependent and not all devices support setting a static bitrate." />
+ <property name="tx-power"
+ description="If non-zero, directs the device to use the specified transmit power. Units are dBm. This property is highly driver dependent and not all devices support setting a static transmit power." />
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, this connection will only apply to the Wi-Fi device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
+ <property name="cloned-mac-address"
+ alias="cloned-mac"
+ description="If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values &quot;preserve&quot;, &quot;permanent&quot;, &quot;random&quot; and &quot;stable&quot; are supported. &quot;preserve&quot; means not to touch the MAC address on activation. &quot;permanent&quot; means to use the permanent hardware address of the device. &quot;random&quot; creates a random MAC address on each connect. &quot;stable&quot; creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to &quot;preserve&quot; (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as &quot;assigned-mac-address&quot; or the deprecated &quot;cloned-mac-address&quot;." />
+ <property name="generate-mac-address-mask"
+ description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered." />
+ <property name="mac-address-blacklist"
+ description="A list of permanent MAC addresses of Wi-Fi devices to which this connection should never apply. Each MAC address should be given in the standard hex-digits-and-colons notation (eg &quot;00:11:22:33:44:55&quot;)." />
+ <property name="mac-address-randomization"
+ description="One of NM_SETTING_MAC_RANDOMIZATION_DEFAULT (0) (never randomize unless the user has set a global default to randomize and the supplicant supports randomization), NM_SETTING_MAC_RANDOMIZATION_NEVER (1) (never randomize the MAC address), or NM_SETTING_MAC_RANDOMIZATION_ALWAYS (2) (always randomize the MAC address). This property is deprecated for &apos;cloned-mac-address&apos;. Deprecated: 1" />
+ <property name="mtu"
+ alias="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
+ <property name="seen-bssids"
+ description="A list of BSSIDs (each BSSID formatted as a MAC address like &quot;00:11:22:33:44:55&quot;) that have been detected as part of the Wi-Fi network. NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved." />
+ <property name="hidden"
+ description="If TRUE, indicates that the network is a non-broadcasting network that hides its SSID. This works both in infrastructure and AP mode. In infrastructure mode, various workarounds are used for a more reliable discovery of hidden networks, such as probe-scanning the SSID. However, these workarounds expose inherent insecurities with hidden SSID networks, and thus hidden SSID networks should be used with caution. In AP mode, the created network does not broadcast its SSID. Note that marking the network as hidden may be a privacy issue for you (in infrastructure mode) or client stations (in AP mode), as the explicit probe-scans are distinctly recognizable on the air." />
+ <property name="powersave"
+ description="One of NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2) (disable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3) (enable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1) (don&apos;t touch currently configure setting) or NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0) (use the globally configured value). All other values are reserved." />
+ <property name="wake-on-wlan"
+ description="The NMSettingWirelessWakeOnWLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY (0x2), NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT (0x4), NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC (0x8), NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE (0x10), NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST (0x20), NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE (0x40), NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE (0x80), NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP (0x100) or the special values NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
+ <property name="ap-isolation"
+ description="Configures AP isolation, which prevents communication between wireless devices connected to this AP. This property can be set to a value different from NM_TERNARY_DEFAULT (-1) only when the interface is configured in AP mode. If set to NM_TERNARY_TRUE (1), devices are not able to communicate with each other. This increases security because it protects devices against attacks from other clients in the network. At the same time, it prevents devices to access resources on the same wireless networks as file shares, printers, etc. If set to NM_TERNARY_FALSE (0), devices can talk to each other. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in case the global default is unspecified it is assumed to be NM_TERNARY_FALSE (0)." />
+ </setting>
+ <setting name="802-11-wireless-security"
+ alias="wifi-sec" >
+ <property name="key-mgmt"
+ description="Key management used for the connection. One of &quot;none&quot; (WEP), &quot;ieee8021x&quot; (Dynamic WEP), &quot;wpa-psk&quot; (infrastructure WPA-PSK), &quot;sae&quot; (SAE), &quot;owe&quot; (Opportunistic Wireless Encryption) or &quot;wpa-eap&quot; (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security." />
+ <property name="wep-tx-keyidx"
+ description="When static WEP is used (ie, key-mgmt = &quot;none&quot;) and a non-default WEP key index is used by the AP, put that WEP key index here. Valid values are 0 (default key) through 3. Note that some consumer access points (like the Linksys WRT54G) number the keys 1 - 4." />
+ <property name="auth-alg"
+ description="When WEP is used (ie, key-mgmt = &quot;none&quot; or &quot;ieee8021x&quot;) indicate the 802.11 authentication algorithm required by the AP here. One of &quot;open&quot; for Open System, &quot;shared&quot; for Shared Key, or &quot;leap&quot; for Cisco LEAP. When using Cisco LEAP (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;) the &quot;leap-username&quot; and &quot;leap-password&quot; properties must be specified." />
+ <property name="proto"
+ description="List of strings specifying the allowed WPA protocol versions to use. Each element may be one &quot;wpa&quot; (allow WPA) or &quot;rsn&quot; (allow WPA2/RSN). If not specified, both WPA and RSN connections are allowed." />
+ <property name="pairwise"
+ description="A list of pairwise encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of &quot;tkip&quot; or &quot;ccmp&quot;." />
+ <property name="group"
+ description="A list of group/broadcast encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty. Each list element may be one of &quot;wep40&quot;, &quot;wep104&quot;, &quot;tkip&quot;, or &quot;ccmp&quot;." />
+ <property name="pmf"
+ description="Indicates whether Protected Management Frames (802.11w) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no global default is set, PMF will be optionally enabled." />
+ <property name="leap-username"
+ description="The login username for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
+ <property name="wep-key0"
+ description="Index 0 WEP key. This is the WEP key used in most networks. See the &quot;wep-key-type&quot; property for a description of how this key is interpreted." />
+ <property name="wep-key1"
+ description="Index 1 WEP key. This WEP index is not used by most networks. See the &quot;wep-key-type&quot; property for a description of how this key is interpreted." />
+ <property name="wep-key2"
+ description="Index 2 WEP key. This WEP index is not used by most networks. See the &quot;wep-key-type&quot; property for a description of how this key is interpreted." />
+ <property name="wep-key3"
+ description="Index 3 WEP key. This WEP index is not used by most networks. See the &quot;wep-key-type&quot; property for a description of how this key is interpreted." />
+ <property name="wep-key-flags"
+ description="Flags indicating how to handle the &quot;wep-key0&quot;, &quot;wep-key1&quot;, &quot;wep-key2&quot;, and &quot;wep-key3&quot; properties." />
+ <property name="wep-key-type"
+ description="Controls the interpretation of WEP keys. Allowed values are NM_WEP_KEY_TYPE_KEY (1), in which case the key is either a 10- or 26-character hexadecimal string, or a 5- or 13-character ASCII password; or NM_WEP_KEY_TYPE_PASSPHRASE (2), in which case the passphrase is provided as a string and will be hashed using the de-facto MD5 method to derive the actual WEP key." />
+ <property name="psk"
+ description="Pre-Shared-Key for WPA networks. For WPA-PSK, it&apos;s either an ASCII passphrase of 8 to 63 characters that is (as specified in the 802.11i standard) hashed to derive the actual key, or the key in form of 64 hexadecimal character. The WPA3-Personal networks use a passphrase of any length for SAE authentication." />
+ <property name="psk-flags"
+ description="Flags indicating how to handle the &quot;psk&quot; property." />
+ <property name="leap-password"
+ description="The login password for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
+ <property name="leap-password-flags"
+ description="Flags indicating how to handle the &quot;leap-password&quot; property." />
+ <property name="wps-method"
+ description="Flags indicating which mode of WPS is to be used if any. There&apos;s little point in changing the default setting as NetworkManager will automatically determine whether it&apos;s feasible to start WPS enrollment from the Access Point capabilities. WPS can be disabled by setting this property to a value of 1." />
+ <property name="fils"
+ description="Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection. One of NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_FILS_DISABLE (1) (disable FILS), NM_SETTING_WIRELESS_SECURITY_FILS_OPTIONAL (2) (enable FILS if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_FILS_REQUIRED (3) (enable FILS and fail if not supported). When set to NM_SETTING_WIRELESS_SECURITY_FILS_DEFAULT (0) and no global default is set, FILS will be optionally enabled." />
+ </setting>
+ <setting name="802-1x" >
+ <property name="optional"
+ description="Whether the 802.1X authentication is optional. If TRUE, the activation will continue even after a timeout or an authentication failure. Setting the property to TRUE is currently allowed only for Ethernet connections. If set to FALSE, the activation can continue only after a successful authentication." />
+ <property name="eap"
+ description="The allowed EAP method to be used when authenticating to the network with 802.1x. Valid methods are: &quot;leap&quot;, &quot;md5&quot;, &quot;tls&quot;, &quot;peap&quot;, &quot;ttls&quot;, &quot;pwd&quot;, and &quot;fast&quot;. Each method requires different configuration using the properties of this setting; refer to wpa_supplicant documentation for the allowed combinations." />
+ <property name="identity"
+ description="Identity string for EAP authentication methods. Often the user&apos;s user or login name." />
+ <property name="anonymous-identity"
+ description="Anonymous identity string for EAP authentication methods. Used as the unencrypted identity with EAP types that support different tunneled identity like EAP-TTLS." />
+ <property name="pac-file"
+ description="UTF-8 encoded file path containing PAC for EAP-FAST." />
+ <property name="ca-cert"
+ description="Contains the CA certificate if used by the EAP method specified in the &quot;eap&quot; property. Certificate data is specified using a &quot;scheme&quot;; three are currently supported: blob, path and pkcs#11 URL. When using the blob scheme this property should be set to the certificate&apos;s DER encoded data. When using the path scheme, this property should be set to the full UTF-8 encoded path of the certificate, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte. This property can be unset even if the EAP method supports CA certificates, but this allows man-in-the-middle attacks and is NOT recommended. Note that enabling NMSetting8021x:system-ca-certs will override this setting to use the built-in path, if the built-in path is not a directory." />
+ <property name="ca-cert-password"
+ description="The password used to access the CA certificate stored in &quot;ca-cert&quot; property. Only makes sense if the certificate is stored on a PKCS#11 token that requires a login." />
+ <property name="ca-cert-password-flags"
+ description="Flags indicating how to handle the &quot;ca-cert-password&quot; property." />
+ <property name="ca-path"
+ description="UTF-8 encoded path to a directory containing PEM or DER formatted certificates to be added to the verification chain in addition to the certificate specified in the &quot;ca-cert&quot; property. If NMSetting8021x:system-ca-certs is enabled and the built-in CA path is an existing directory, then this setting is ignored." />
+ <property name="subject-match"
+ description="Substring to be matched against the subject of the certificate presented by the authentication server. When unset, no verification of the authentication server certificate&apos;s subject is performed. This property provides little security, if any, and its use is deprecated in favor of NMSetting8021x:domain-suffix-match." />
+ <property name="altsubject-matches"
+ description="List of strings to be matched against the altSubjectName of the certificate presented by the authentication server. If the list is empty, no verification of the server certificate&apos;s altSubjectName is performed." />
+ <property name="domain-suffix-match"
+ description="Constraint for server domain name. If set, this FQDN is used as a suffix match requirement for dNSName element(s) of the certificate presented by the authentication server. If a matching dNSName is found, this constraint is met. If no dNSName values are present, this constraint is matched against SubjectName CN using same suffix match comparison. Since version 1.24, multiple valid FQDNs can be passed as a &quot;;&quot; delimited list." />
+ <property name="domain-match"
+ description="Constraint for server domain name. If set, this list of FQDNs is used as a match requirement for dNSName element(s) of the certificate presented by the authentication server. If a matching dNSName is found, this constraint is met. If no dNSName values are present, this constraint is matched against SubjectName CN using the same comparison. Multiple valid FQDNs can be passed as a &quot;;&quot; delimited list." />
+ <property name="client-cert"
+ description="Contains the client certificate if used by the EAP method specified in the &quot;eap&quot; property. Certificate data is specified using a &quot;scheme&quot;; two are currently supported: blob and path. When using the blob scheme (which is backwards compatible with NM 0.7.x) this property should be set to the certificate&apos;s DER encoded data. When using the path scheme, this property should be set to the full UTF-8 encoded path of the certificate, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte." />
+ <property name="client-cert-password"
+ description="The password used to access the client certificate stored in &quot;client-cert&quot; property. Only makes sense if the certificate is stored on a PKCS#11 token that requires a login." />
+ <property name="client-cert-password-flags"
+ description="Flags indicating how to handle the &quot;client-cert-password&quot; property." />
+ <property name="phase1-peapver"
+ description="Forces which PEAP version is used when PEAP is set as the EAP method in the &quot;eap&quot; property. When unset, the version reported by the server will be used. Sometimes when using older RADIUS servers, it is necessary to force the client to use a particular PEAP version. To do so, this property may be set to &quot;0&quot; or &quot;1&quot; to force that specific PEAP version." />
+ <property name="phase1-peaplabel"
+ description="Forces use of the new PEAP label during key derivation. Some RADIUS servers may require forcing the new PEAP label to interoperate with PEAPv1. Set to &quot;1&quot; to force use of the new PEAP label. See the wpa_supplicant documentation for more details." />
+ <property name="phase1-fast-provisioning"
+ description="Enables or disables in-line provisioning of EAP-FAST credentials when FAST is specified as the EAP method in the &quot;eap&quot; property. Recognized values are &quot;0&quot; (disabled), &quot;1&quot; (allow unauthenticated provisioning), &quot;2&quot; (allow authenticated provisioning), and &quot;3&quot; (allow both authenticated and unauthenticated provisioning). See the wpa_supplicant documentation for more details." />
+ <property name="phase1-auth-flags"
+ description="Specifies authentication flags to use in &quot;phase 1&quot; outer authentication using NMSetting8021xAuthFlags options. The individual TLS versions can be explicitly disabled. If a certain TLS disable flag is not set, it is up to the supplicant to allow or forbid it. The TLS options map to tls_disable_tlsv1_x settings. See the wpa_supplicant documentation for more details." />
+ <property name="phase2-auth"
+ description="Specifies the allowed &quot;phase 2&quot; inner non-EAP authentication method when an EAP method that uses an inner TLS tunnel is specified in the &quot;eap&quot; property. Recognized non-EAP &quot;phase 2&quot; methods are &quot;pap&quot;, &quot;chap&quot;, &quot;mschap&quot;, &quot;mschapv2&quot;, &quot;gtc&quot;, &quot;otp&quot;, &quot;md5&quot;, and &quot;tls&quot;. Each &quot;phase 2&quot; inner method requires specific parameters for successful authentication; see the wpa_supplicant documentation for more details." />
+ <property name="phase2-autheap"
+ description="Specifies the allowed &quot;phase 2&quot; inner EAP-based authentication method when an EAP method that uses an inner TLS tunnel is specified in the &quot;eap&quot; property. Recognized EAP-based &quot;phase 2&quot; methods are &quot;md5&quot;, &quot;mschapv2&quot;, &quot;otp&quot;, &quot;gtc&quot;, and &quot;tls&quot;. Each &quot;phase 2&quot; inner method requires specific parameters for successful authentication; see the wpa_supplicant documentation for more details." />
+ <property name="phase2-ca-cert"
+ description="Contains the &quot;phase 2&quot; CA certificate if used by the EAP method specified in the &quot;phase2-auth&quot; or &quot;phase2-autheap&quot; properties. Certificate data is specified using a &quot;scheme&quot;; three are currently supported: blob, path and pkcs#11 URL. When using the blob scheme this property should be set to the certificate&apos;s DER encoded data. When using the path scheme, this property should be set to the full UTF-8 encoded path of the certificate, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte. This property can be unset even if the EAP method supports CA certificates, but this allows man-in-the-middle attacks and is NOT recommended. Note that enabling NMSetting8021x:system-ca-certs will override this setting to use the built-in path, if the built-in path is not a directory." />
+ <property name="phase2-ca-cert-password"
+ description="The password used to access the &quot;phase2&quot; CA certificate stored in &quot;phase2-ca-cert&quot; property. Only makes sense if the certificate is stored on a PKCS#11 token that requires a login." />
+ <property name="phase2-ca-cert-password-flags"
+ description="Flags indicating how to handle the &quot;phase2-ca-cert-password&quot; property." />
+ <property name="phase2-ca-path"
+ description="UTF-8 encoded path to a directory containing PEM or DER formatted certificates to be added to the verification chain in addition to the certificate specified in the &quot;phase2-ca-cert&quot; property. If NMSetting8021x:system-ca-certs is enabled and the built-in CA path is an existing directory, then this setting is ignored." />
+ <property name="phase2-subject-match"
+ description="Substring to be matched against the subject of the certificate presented by the authentication server during the inner &quot;phase 2&quot; authentication. When unset, no verification of the authentication server certificate&apos;s subject is performed. This property provides little security, if any, and its use is deprecated in favor of NMSetting8021x:phase2-domain-suffix-match." />
+ <property name="phase2-altsubject-matches"
+ description="List of strings to be matched against the altSubjectName of the certificate presented by the authentication server during the inner &quot;phase 2&quot; authentication. If the list is empty, no verification of the server certificate&apos;s altSubjectName is performed." />
+ <property name="phase2-domain-suffix-match"
+ description="Constraint for server domain name. If set, this FQDN is used as a suffix match requirement for dNSName element(s) of the certificate presented by the authentication server during the inner &quot;phase 2&quot; authentication. If a matching dNSName is found, this constraint is met. If no dNSName values are present, this constraint is matched against SubjectName CN using same suffix match comparison. Since version 1.24, multiple valid FQDNs can be passed as a &quot;;&quot; delimited list." />
+ <property name="phase2-domain-match"
+ description="Constraint for server domain name. If set, this list of FQDNs is used as a match requirement for dNSName element(s) of the certificate presented by the authentication server during the inner &quot;phase 2&quot; authentication. If a matching dNSName is found, this constraint is met. If no dNSName values are present, this constraint is matched against SubjectName CN using the same comparison. Multiple valid FQDNs can be passed as a &quot;;&quot; delimited list." />
+ <property name="phase2-client-cert"
+ description="Contains the &quot;phase 2&quot; client certificate if used by the EAP method specified in the &quot;phase2-auth&quot; or &quot;phase2-autheap&quot; properties. Certificate data is specified using a &quot;scheme&quot;; two are currently supported: blob and path. When using the blob scheme (which is backwards compatible with NM 0.7.x) this property should be set to the certificate&apos;s DER encoded data. When using the path scheme, this property should be set to the full UTF-8 encoded path of the certificate, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte. This property can be unset even if the EAP method supports CA certificates, but this allows man-in-the-middle attacks and is NOT recommended." />
+ <property name="phase2-client-cert-password"
+ description="The password used to access the &quot;phase2&quot; client certificate stored in &quot;phase2-client-cert&quot; property. Only makes sense if the certificate is stored on a PKCS#11 token that requires a login." />
+ <property name="phase2-client-cert-password-flags"
+ description="Flags indicating how to handle the &quot;phase2-client-cert-password&quot; property." />
+ <property name="password"
+ description="UTF-8 encoded password used for EAP authentication methods. If both the &quot;password&quot; property and the &quot;password-raw&quot; property are specified, &quot;password&quot; is preferred." />
+ <property name="password-flags"
+ description="Flags indicating how to handle the &quot;password&quot; property." />
+ <property name="password-raw"
+ description="Password used for EAP authentication methods, given as a byte array to allow passwords in other encodings than UTF-8 to be used. If both the &quot;password&quot; property and the &quot;password-raw&quot; property are specified, &quot;password&quot; is preferred." />
+ <property name="password-raw-flags"
+ description="Flags indicating how to handle the &quot;password-raw&quot; property." />
+ <property name="private-key"
+ description="Contains the private key when the &quot;eap&quot; property is set to &quot;tls&quot;. Key data is specified using a &quot;scheme&quot;; two are currently supported: blob and path. When using the blob scheme and private keys, this property should be set to the key&apos;s encrypted PEM encoded data. When using private keys with the path scheme, this property should be set to the full UTF-8 encoded path of the key, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte. When using PKCS#12 format private keys and the blob scheme, this property should be set to the PKCS#12 data and the &quot;private-key-password&quot; property must be set to password used to decrypt the PKCS#12 certificate and key. When using PKCS#12 files and the path scheme, this property should be set to the full UTF-8 encoded path of the key, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte, and as with the blob scheme the &quot;private-key-password&quot; property must be set to the password used to decode the PKCS#12 private key and certificate. WARNING: &quot;private-key&quot; is not a &quot;secret&quot; property, and thus unencrypted private key data using the BLOB scheme may be readable by unprivileged users. Private keys should always be encrypted with a private key password to prevent unauthorized access to unencrypted private key data." />
+ <property name="private-key-password"
+ description="The password used to decrypt the private key specified in the &quot;private-key&quot; property when the private key either uses the path scheme, or if the private key is a PKCS#12 format key." />
+ <property name="private-key-password-flags"
+ description="Flags indicating how to handle the &quot;private-key-password&quot; property." />
+ <property name="phase2-private-key"
+ description="Contains the &quot;phase 2&quot; inner private key when the &quot;phase2-auth&quot; or &quot;phase2-autheap&quot; property is set to &quot;tls&quot;. Key data is specified using a &quot;scheme&quot;; two are currently supported: blob and path. When using the blob scheme and private keys, this property should be set to the key&apos;s encrypted PEM encoded data. When using private keys with the path scheme, this property should be set to the full UTF-8 encoded path of the key, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte. When using PKCS#12 format private keys and the blob scheme, this property should be set to the PKCS#12 data and the &quot;phase2-private-key-password&quot; property must be set to password used to decrypt the PKCS#12 certificate and key. When using PKCS#12 files and the path scheme, this property should be set to the full UTF-8 encoded path of the key, prefixed with the string &quot;file://&quot; and ending with a terminating NUL byte, and as with the blob scheme the &quot;phase2-private-key-password&quot; property must be set to the password used to decode the PKCS#12 private key and certificate." />
+ <property name="phase2-private-key-password"
+ description="The password used to decrypt the &quot;phase 2&quot; private key specified in the &quot;phase2-private-key&quot; property when the private key either uses the path scheme, or is a PKCS#12 format key." />
+ <property name="phase2-private-key-password-flags"
+ description="Flags indicating how to handle the &quot;phase2-private-key-password&quot; property." />
+ <property name="pin"
+ description="PIN used for EAP authentication methods." />
+ <property name="pin-flags"
+ description="Flags indicating how to handle the &quot;pin&quot; property." />
+ <property name="system-ca-certs"
+ description="When TRUE, overrides the &quot;ca-path&quot; and &quot;phase2-ca-path&quot; properties using the system CA directory specified at configure time with the --system-ca-path switch. The certificates in this directory are added to the verification chain in addition to any certificates specified by the &quot;ca-cert&quot; and &quot;phase2-ca-cert&quot; properties. If the path provided with --system-ca-path is rather a file name (bundle of trusted CA certificates), it overrides &quot;ca-cert&quot; and &quot;phase2-ca-cert&quot; properties instead (sets ca_cert/ca_cert2 options for wpa_supplicant)." />
+ <property name="auth-timeout"
+ description="A timeout for the authentication. Zero means the global default; if the global default is not set, the authentication timeout is 25 seconds." />
+ </setting>
+ <setting name="802-3-ethernet"
+ alias="ethernet" >
+ <property name="port"
+ description="Specific port type to use if the device supports multiple attachment methods. One of &quot;tp&quot; (Twisted Pair), &quot;aui&quot; (Attachment Unit Interface), &quot;bnc&quot; (Thin Ethernet) or &quot;mii&quot; (Media Independent Interface). If the device supports only one port type, this setting is ignored." />
+ <property name="speed"
+ description="When a value greater than 0 is set, configures the device to use the specified speed. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified speed will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabit speeds, as in this case link negotiation is mandatory. If the value is unset (0, the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported speeds. In Mbit/s, ie 100 == 100Mbit/s. Must be set together with the &quot;duplex&quot; property when non-zero. Before specifying a speed value be sure your device supports it." />
+ <property name="duplex"
+ description="When a value is set, either &quot;half&quot; or &quot;full&quot;, configures the device to use the specified duplex mode. If &quot;auto-negotiate&quot; is &quot;yes&quot; the specified duplex mode will be the only one advertised during link negotiation: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. If the value is unset (the default), the link configuration will be either skipped (if &quot;auto-negotiate&quot; is &quot;no&quot;, the default) or will be auto-negotiated (if &quot;auto-negotiate&quot; is &quot;yes&quot;) and the local device will advertise all the supported duplex modes. Must be set together with the &quot;speed&quot; property if specified. Before specifying a duplex mode be sure your device supports it." />
+ <property name="auto-negotiate"
+ description="When TRUE, enforce auto-negotiation of speed and duplex mode. If &quot;speed&quot; and &quot;duplex&quot; properties are both specified, only that single mode will be advertised and accepted during the link auto-negotiation process: this works only for BASE-T 802.3 specifications and is useful for enforcing gigabits modes, as in these cases link negotiation is mandatory. When FALSE, &quot;speed&quot; and &quot;duplex&quot; properties should be both set or link configuration will be skipped." />
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
+ <property name="cloned-mac-address"
+ alias="cloned-mac"
+ description="If specified, request that the device use this MAC address instead. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values &quot;preserve&quot;, &quot;permanent&quot;, &quot;random&quot; and &quot;stable&quot; are supported. &quot;preserve&quot; means not to touch the MAC address on activation. &quot;permanent&quot; means to use the permanent hardware address if the device has one (otherwise this is treated as &quot;preserve&quot;). &quot;random&quot; creates a random MAC address on each connect. &quot;stable&quot; creates a hashed MAC address based on connection.stable-id and a machine dependent key. If unspecified, the value can be overwritten via global defaults, see manual of NetworkManager.conf. If still unspecified, it defaults to &quot;preserve&quot; (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as &quot;assigned-mac-address&quot; or the deprecated &quot;cloned-mac-address&quot;." />
+ <property name="generate-mac-address-mask"
+ description="With &quot;cloned-mac-address&quot; setting &quot;random&quot; or &quot;stable&quot;, by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting &quot;FE:FF:FF:00:00:00&quot; means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the &quot;random&quot; or &quot;stable&quot; algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of &quot;FE:FF:FF:00:00:00 68:F7:28:00:00:00&quot; will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of &quot;02:00:00:00:00:00 00:00:00:00:00:00&quot; will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, &quot;02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00&quot; will create a fully scrambled MAC address, randomly locally or globally administered." />
+ <property name="mac-address-blacklist"
+ description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list. Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)." />
+ <property name="mtu"
+ alias="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
+ <property name="s390-subchannels"
+ description="Identifies specific subchannels that this network device uses for communication with z/VM or s390 host. Like the &quot;mac-address&quot; property for non-z/VM devices, this property can be used to ensure this connection only applies to the network device that uses these subchannels. The list should contain exactly 3 strings, and each string may only be composed of hexadecimal characters and the period (.) character." />
+ <property name="s390-nettype"
+ description="s390 network device type; one of &quot;qeth&quot;, &quot;lcs&quot;, or &quot;ctc&quot;, representing the different types of virtual network devices available on s390 systems." />
+ <property name="s390-options"
+ description="Dictionary of key/value pairs of s390-specific device options. Both keys and values must be strings. Allowed keys include &quot;portno&quot;, &quot;layer2&quot;, &quot;portname&quot;, &quot;protocol&quot;, among others. Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
+ <property name="wake-on-lan"
+ description="The NMSettingWiredWakeOnLan options to enable. Not all devices support all options. May be any combination of NM_SETTING_WIRED_WAKE_ON_LAN_PHY (0x2), NM_SETTING_WIRED_WAKE_ON_LAN_UNICAST (0x4), NM_SETTING_WIRED_WAKE_ON_LAN_MULTICAST (0x8), NM_SETTING_WIRED_WAKE_ON_LAN_BROADCAST (0x10), NM_SETTING_WIRED_WAKE_ON_LAN_ARP (0x20), NM_SETTING_WIRED_WAKE_ON_LAN_MAGIC (0x40) or the special values NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT (0x1) (to use global settings) and NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE (0x8000) (to disable management of Wake-on-LAN in NetworkManager)." />
+ <property name="wake-on-lan-password"
+ description="If specified, the password used with magic-packet-based Wake-on-LAN, represented as an Ethernet MAC address. If NULL, no password will be required." />
+ </setting>
+ <setting name="adsl" >
+ <property name="username"
+ alias="username"
+ description="Username used to authenticate with the ADSL service." />
+ <property name="password"
+ alias="password"
+ description="Password used to authenticate with the ADSL service." />
+ <property name="password-flags"
+ description="Flags indicating how to handle the &quot;password&quot; property." />
+ <property name="protocol"
+ alias="protocol"
+ description="ADSL connection protocol. Can be &quot;pppoa&quot;, &quot;pppoe&quot; or &quot;ipoatm&quot;." />
+ <property name="encapsulation"
+ alias="encapsulation"
+ description="Encapsulation of ADSL connection. Can be &quot;vcmux&quot; or &quot;llc&quot;." />
+ <property name="vpi"
+ description="VPI of ADSL connection" />
+ <property name="vci"
+ description="VCI of ADSL connection" />
+ </setting>
+ <setting name="bluetooth" >
+ <property name="bdaddr"
+ alias="addr"
+ description="The Bluetooth address of the device." />
+ <property name="type"
+ alias="bt-type"
+ description="Either &quot;dun&quot; for Dial-Up Networking connections or &quot;panu&quot; for Personal Area Networking connections to devices supporting the NAP profile." />
+ </setting>
+ <setting name="bond" >
+ <property name="options"
+ description="Dictionary of key/value pairs of bonding options. Both keys and values must be strings. Option names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
+ </setting>
+ <setting name="bridge" >
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, the MAC address of bridge. When creating a new bridge, this MAC address will be set. If this field is left unspecified, the &quot;ethernet.cloned-mac-address&quot; is referred instead to generate the initial MAC address. Note that setting &quot;ethernet.cloned-mac-address&quot; anyway overwrites the MAC address of the bridge later while activating the bridge. Hence, this property is deprecated. Deprecated: 1" />
+ <property name="stp"
+ alias="stp"
+ description="Controls whether Spanning Tree Protocol (STP) is enabled for this bridge." />
+ <property name="priority"
+ alias="priority"
+ description="Sets the Spanning Tree Protocol (STP) priority for this bridge. Lower values are &quot;better&quot;; the lowest priority bridge will be elected the root bridge." />
+ <property name="forward-delay"
+ alias="forward-delay"
+ description="The Spanning Tree Protocol (STP) forwarding delay, in seconds." />
+ <property name="hello-time"
+ alias="hello-time"
+ description="The Spanning Tree Protocol (STP) hello time, in seconds." />
+ <property name="max-age"
+ alias="max-age"
+ description="The Spanning Tree Protocol (STP) maximum message age, in seconds." />
+ <property name="ageing-time"
+ alias="ageing-time"
+ description="The Ethernet MAC address aging time, in seconds." />
+ <property name="group-address"
+ description="If specified, The MAC address of the multicast group this bridge uses for STP. The address must be a link-local address in standard Ethernet MAC address format, ie an address of the form 01:80:C2:00:00:0X, with X in [0, 4..F]. If not specified the default value is 01:80:C2:00:00:00." />
+ <property name="group-forward-mask"
+ alias="group-forward-mask"
+ description="A mask of group addresses to forward. Usually, group addresses in the range from 01:80:C2:00:00:00 to 01:80:C2:00:00:0F are not forwarded according to standards. This property is a mask of 16 bits, each corresponding to a group address in that range that must be forwarded. The mask can&apos;t have bits 0, 1 or 2 set because they are used for STP, MAC pause frames and LACP." />
+ <property name="multicast-hash-max"
+ description="Set maximum size of multicast hash table (value must be a power of 2)." />
+ <property name="multicast-last-member-count"
+ description="Set the number of queries the bridge will send before stopping forwarding a multicast group after a &quot;leave&quot; message has been received." />
+ <property name="multicast-last-member-interval"
+ description="Set interval (in deciseconds) between queries to find remaining members of a group, after a &quot;leave&quot; message is received." />
+ <property name="multicast-membership-interval"
+ description="Set delay (in deciseconds) after which the bridge will leave a group, if no membership reports for this group are received." />
+ <property name="multicast-querier"
+ description="Enable or disable sending of multicast queries by the bridge. If not specified the option is disabled." />
+ <property name="multicast-querier-interval"
+ description="If no queries are seen after this delay (in deciseconds) has passed, the bridge will start to send its own queries." />
+ <property name="multicast-query-interval"
+ description="Interval (in deciseconds) between queries sent by the bridge after the end of the startup phase." />
+ <property name="multicast-query-response-interval"
+ description="Set the Max Response Time/Max Response Delay (in deciseconds) for IGMP/MLD queries sent by the bridge." />
+ <property name="multicast-query-use-ifaddr"
+ description="If enabled the bridge&apos;s own IP address is used as the source address for IGMP queries otherwise the default of 0.0.0.0 is used." />
+ <property name="multicast-snooping"
+ alias="multicast-snooping"
+ description="Controls whether IGMP snooping is enabled for this bridge. Note that if snooping was automatically disabled due to hash collisions, the system may refuse to enable the feature until the collisions are resolved." />
+ <property name="multicast-startup-query-count"
+ description="Set the number of IGMP queries to send during startup phase." />
+ <property name="multicast-startup-query-interval"
+ description="Sets the time (in deciseconds) between queries sent out at startup to determine membership information." />
+ <property name="multicast-router"
+ description="Sets bridge&apos;s multicast router. Multicast-snooping must be enabled for this option to work. Supported values are: &apos;auto&apos;, &apos;disabled&apos;, &apos;enabled&apos; to which kernel assigns the numbers 1, 0, and 2, respectively. If not specified the default value is &apos;auto&apos; (1)." />
+ <property name="vlan-filtering"
+ description="Control whether VLAN filtering is enabled on the bridge." />
+ <property name="vlan-default-pvid"
+ description="The default PVID for the ports of the bridge, that is the VLAN id assigned to incoming untagged frames." />
+ <property name="vlan-stats-enabled"
+ description="Controls whether per-VLAN stats accounting is enabled." />
+ <property name="vlan-protocol"
+ description="If specified, the protocol used for VLAN filtering. Supported values are: &apos;802.1Q&apos;, &apos;802.1ad&apos;. If not specified the default value is &apos;802.1Q&apos;." />
+ <property name="vlans"
+ description="Array of bridge VLAN objects. In addition to the VLANs specified here, the bridge will also have the default-pvid VLAN configured by the bridge.vlan-default-pvid property. In nmcli the VLAN list can be specified with the following syntax: $vid [pvid] [untagged] [, $vid [pvid] [untagged]]... where $vid is either a single id between 1 and 4094 or a range, represented as a couple of ids separated by a dash." />
+ </setting>
+ <setting name="bridge-port" >
+ <property name="priority"
+ alias="priority"
+ description="The Spanning Tree Protocol (STP) priority of this bridge port." />
+ <property name="path-cost"
+ alias="path-cost"
+ description="The Spanning Tree Protocol (STP) port cost for destinations via this port." />
+ <property name="hairpin-mode"
+ alias="hairpin"
+ description="Enables or disables &quot;hairpin mode&quot; for the port, which allows frames to be sent back out through the port the frame was received on." />
+ <property name="vlans"
+ description="Array of bridge VLAN objects. In addition to the VLANs specified here, the port will also have the default-pvid VLAN configured on the bridge by the bridge.vlan-default-pvid property. In nmcli the VLAN list can be specified with the following syntax: $vid [pvid] [untagged] [, $vid [pvid] [untagged]]... where $vid is either a single id between 1 and 4094 or a range, represented as a couple of ids separated by a dash." />
+ </setting>
+ <setting name="cdma" >
+ <property name="number"
+ description="The number to dial to establish the connection to the CDMA-based mobile broadband network, if any. If not specified, the default number (#777) is used when required." />
+ <property name="username"
+ alias="user"
+ description="The username used to authenticate with the network, if required. Many providers do not require a username, or accept any username. But if a username is required, it is specified here." />
+ <property name="password"
+ alias="password"
+ description="The password used to authenticate with the network, if required. Many providers do not require a password, or accept any password. But if a password is required, it is specified here." />
+ <property name="password-flags"
+ description="Flags indicating how to handle the &quot;password&quot; property." />
+ <property name="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
+ </setting>
+ <setting name="connection" >
+ <property name="id"
+ alias="con-name"
+ description="A human readable unique identifier for the connection, like &quot;Work Wi-Fi&quot; or &quot;T-Mobile 3G&quot;." />
+ <property name="uuid"
+ description="A universally unique identifier for the connection, for example generated with libuuid. It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network. For example, it should not be changed when the &quot;id&quot; property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or &quot;type&quot; property changes. The UUID must be in the format &quot;2815492f-7e56-435e-b2e9-246bd7cdc664&quot; (ie, contains only hexadecimal characters and &quot;-&quot;)." />
+ <property name="stable-id"
+ description="This represents the identity of the connection used for various purposes. It allows to configure multiple profiles to share the identity. Also, the stable-id can contain placeholders that are substituted dynamically and deterministically depending on the context. The stable-id is used for generating IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the generated cloned MAC address for ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable. It is also used as DHCP client identifier with ipv4.dhcp-client-id=stable and to derive the DHCP DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid]. Note that depending on the context where it is used, other parameters are also seeded into the generation algorithm. For example, a per-host key is commonly also included, so that different systems end up generating different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device&apos;s name is included, so that different interfaces yield different addresses. The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret-key. The &apos;$&apos; character is treated special to perform dynamic substitutions at runtime. Currently, supported are &quot;${CONNECTION}&quot;, &quot;${DEVICE}&quot;, &quot;${MAC}&quot;, &quot;${BOOT}&quot;, &quot;${RANDOM}&quot;. These effectively create unique IDs per-connection, per-device, per-boot, or every time. Note that &quot;${DEVICE}&quot; corresponds to the interface name of the device and &quot;${MAC}&quot; is the permanent MAC address of the device. Any unrecognized patterns following &apos;$&apos; are treated verbatim, however are reserved for future use. You are thus advised to avoid &apos;$&apos; or escape it as &quot;$$&quot;. For example, set it to &quot;${CONNECTION}-${BOOT}-${DEVICE}&quot; to create a unique id for this connection that changes with every reboot and differs depending on the interface where the profile activates. If the value is unset, a global connection default is consulted. If the value is still unset, the default is similar to &quot;${CONNECTION}&quot; and uses a unique, fixed ID for the connection." />
+ <property name="type"
+ alias="type"
+ description="Base type of the connection. For hardware-dependent connections, should contain the setting name of the hardware-type specific setting (ie, &quot;802-3-ethernet&quot; or &quot;802-11-wireless&quot; or &quot;bluetooth&quot;, etc), and for non-hardware dependent connections like VPN or otherwise, should contain the setting name of that setting type (ie, &quot;vpn&quot; or &quot;bridge&quot;, etc)." />
+ <property name="interface-name"
+ alias="ifname"
+ description="The name of the network interface this connection is bound to. If not set, then the connection can be attached to any interface of the appropriate type (subject to restrictions imposed by other settings). For software devices this specifies the name of the created device. For connection types where interface names cannot easily be made persistent (e.g. mobile broadband or USB Ethernet), this property should not be used. Setting this property restricts the interfaces a connection can be used with, and if interface names change or are reordered the connection may be applied to the wrong interface." />
+ <property name="autoconnect"
+ alias="autoconnect"
+ description="Whether or not the connection should be automatically connected by NetworkManager when the resources for the connection are available. TRUE to automatically activate the connection, FALSE to require manual intervention to activate the connection. Note that autoconnect is not implemented for VPN profiles. See &quot;secondaries&quot; as an alternative to automatically connect VPN profiles." />
+ <property name="autoconnect-priority"
+ description="The autoconnect priority. If the connection is set to autoconnect, connections with higher priority will be preferred. Defaults to 0. The higher number means higher priority." />
+ <property name="autoconnect-retries"
+ description="The number of times a connection should be tried when autoactivating before giving up. Zero means forever, -1 means the global default (4 times if not overridden). Setting this to 1 means to try activation only once before blocking autoconnect. Note that after a timeout, NetworkManager will try to autoconnect again." />
+ <property name="multi-connect"
+ description="Specifies whether the profile can be active multiple times at a particular moment. The value is of type NMConnectionMultiConnect." />
+ <property name="auth-retries"
+ description="The number of retries for the authentication. Zero means to try indefinitely; -1 means to use a global default. If the global default is not set, the authentication retries for 3 times before failing the connection. Currently, this only applies to 802-1x authentication." />
+ <property name="timestamp"
+ description="The time, in seconds since the Unix Epoch, that the connection was last _successfully_ fully activated. NetworkManager updates the connection timestamp periodically when the connection is active to ensure that an active connection has the latest timestamp. The property is only meant for reading (changes to this property will not be preserved)." />
+ <property name="read-only"
+ description="FALSE if the connection can be modified using the provided settings service&apos;s D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified." />
+ <property name="permissions"
+ description="An array of strings defining what access a given user has to this connection. If this is NULL or empty, all users are allowed to access this connection; otherwise users are allowed if and only if they are in this list. When this is not empty, the connection can be active only when one of the specified users is logged into an active session. Each entry is of the form &quot;[type]:[id]:[reserved]&quot;; for example, &quot;user:dcbw:blah&quot;. At this time only the &quot;user&quot; [type] is allowed. Any other values are ignored and reserved for future use. [id] is the username that this permission refers to, which may not contain the &quot;:&quot; character. Any [reserved] information present must be ignored and is reserved for future use. All of [type], [id], and [reserved] must be valid UTF-8." />
+ <property name="zone"
+ description="The trust level of a the connection. Free form case-insensitive string (for example &quot;Home&quot;, &quot;Work&quot;, &quot;Public&quot;). NULL or unspecified zone means the connection will be placed in the default zone as defined by the firewall. When updating this property on a currently activated connection, the change takes effect immediately." />
+ <property name="master"
+ alias="master"
+ description="Interface name of the master device or UUID of the master connection." />
+ <property name="slave-type"
+ alias="slave-type"
+ description="Setting name of the device type of this slave&apos;s master connection (eg, &quot;bond&quot;), or NULL if this connection is not a slave." />
+ <property name="autoconnect-slaves"
+ description="Whether or not slaves of this connection should be automatically brought up when NetworkManager activates this connection. This only has a real effect for master connections. The properties &quot;autoconnect&quot;, &quot;autoconnect-priority&quot; and &quot;autoconnect-retries&quot; are unrelated to this setting. The permitted values are: 0: leave slave connections untouched, 1: activate all the slave connections with this connection, -1: default. If -1 (default) is set, global connection.autoconnect-slaves is read to determine the real value. If it is default as well, this fallbacks to 0." />
+ <property name="secondaries"
+ description="List of connection UUIDs that should be activated when the base connection itself is activated. Currently, only VPN connections are supported." />
+ <property name="gateway-ping-timeout"
+ description="If greater than zero, delay success of IP addressing until either the timeout is reached, or an IP gateway replies to a ping." />
+ <property name="metered"
+ description="Whether the connection is metered. When updating this property on a currently activated connection, the change takes effect immediately." />
+ <property name="lldp"
+ description="Whether LLDP is enabled for the connection." />
+ <property name="mdns"
+ description="Whether mDNS is enabled for the connection. The permitted values are: &quot;yes&quot; (2) register hostname and resolving for the connection, &quot;no&quot; (0) disable mDNS for the interface, &quot;resolve&quot; (1) do not register hostname but allow resolving of mDNS host names and &quot;default&quot; (-1) to allow lookup of a global default in NetworkManager.conf. If unspecified, &quot;default&quot; ultimately depends on the DNS plugin (which for systemd-resolved currently means &quot;no&quot;). This feature requires a plugin which supports mDNS. Otherwise, the setting has no effect. One such plugin is dns-systemd-resolved." />
+ <property name="llmnr"
+ description="Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the connection. LLMNR is a protocol based on the Domain Name System (DNS) packet format that allows both IPv4 and IPv6 hosts to perform name resolution for hosts on the same local link. The permitted values are: &quot;yes&quot; (2) register hostname and resolving for the connection, &quot;no&quot; (0) disable LLMNR for the interface, &quot;resolve&quot; (1) do not register hostname but allow resolving of LLMNR host names If unspecified, &quot;default&quot; ultimately depends on the DNS plugin (which for systemd-resolved currently means &quot;yes&quot;). This feature requires a plugin which supports LLMNR. Otherwise, the setting has no effect. One such plugin is dns-systemd-resolved." />
+ <property name="mud-url"
+ description="If configured, set to a Manufacturer Usage Description (MUD) URL that points to manufacturer-recommended network policies for IoT devices. It is transmitted as a DHCPv4 or DHCPv6 option. The value must be a valid URL starting with &quot;https://&quot;. The special value &quot;none&quot; is allowed to indicate that no MUD URL is used. If the per-profile value is unspecified (the default), a global connection default gets consulted. If still unspecified, the ultimate default is &quot;none&quot;." />
+ <property name="wait-device-timeout"
+ description="Timeout in milliseconds to wait for device at startup. During boot, devices may take a while to be detected by the driver. This property will cause to delay NetworkManager-wait-online.service and nm-online to give the device a chance to appear. This works by waiting for the given timeout until a compatible device for the profile is available and managed. The value 0 means no wait time. The default value is -1, which currently has the same meaning as no wait time." />
+ </setting>
+ <setting name="dcb" >
+ <property name="app-fcoe-flags"
+ description="Specifies the NMSettingDcbFlags for the DCB FCoE application. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
+ <property name="app-fcoe-priority"
+ description="The highest User Priority (0 - 7) which FCoE frames should use, or -1 for default priority. Only used when the &quot;app-fcoe-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
+ <property name="app-fcoe-mode"
+ description="The FCoE controller mode; either &quot;fabric&quot; (default) or &quot;vn2vn&quot;." />
+ <property name="app-iscsi-flags"
+ description="Specifies the NMSettingDcbFlags for the DCB iSCSI application. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
+ <property name="app-iscsi-priority"
+ description="The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for default priority. Only used when the &quot;app-iscsi-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
+ <property name="app-fip-flags"
+ description="Specifies the NMSettingDcbFlags for the DCB FIP application. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
+ <property name="app-fip-priority"
+ description="The highest User Priority (0 - 7) which FIP frames should use, or -1 for default priority. Only used when the &quot;app-fip-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
+ <property name="priority-flow-control-flags"
+ description="Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
+ <property name="priority-flow-control"
+ description="An array of 8 boolean values, where the array index corresponds to the User Priority (0 - 7) and the value indicates whether or not the corresponding priority should transmit priority pause." />
+ <property name="priority-group-flags"
+ description="Specifies the NMSettingDcbFlags for DCB Priority Groups. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
+ <property name="priority-group-id"
+ description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the Priority Group ID. Allowed Priority Group ID values are 0 - 7 or 15 for the unrestricted group." />
+ <property name="priority-group-bandwidth"
+ description="An array of 8 uint values, where the array index corresponds to the Priority Group ID (0 - 7) and the value indicates the percentage of link bandwidth allocated to that group. Allowed values are 0 - 100, and the sum of all values must total 100 percents." />
+ <property name="priority-bandwidth"
+ description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the percentage of bandwidth of the priority&apos;s assigned group that the priority may use. The sum of all percentages for priorities which belong to the same group must total 100 percents." />
+ <property name="priority-strict-bandwidth"
+ description="An array of 8 boolean values, where the array index corresponds to the User Priority (0 - 7) and the value indicates whether or not the priority may use all of the bandwidth allocated to its assigned group." />
+ <property name="priority-traffic-class"
+ description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the traffic class (0 - 7) to which the priority is mapped." />
+ </setting>
+ <setting name="dummy" >
+ </setting>
+ <setting name="ethtool" >
+ <property name="feature-esp-hw-offload" />
+ <property name="feature-esp-tx-csum-hw-offload" />
+ <property name="feature-fcoe-mtu" />
+ <property name="feature-gro" />
+ <property name="feature-gso" />
+ <property name="feature-highdma" />
+ <property name="feature-hw-tc-offload" />
+ <property name="feature-l2-fwd-offload" />
+ <property name="feature-loopback" />
+ <property name="feature-lro" />
+ <property name="feature-ntuple" />
+ <property name="feature-rx" />
+ <property name="feature-rxhash" />
+ <property name="feature-rxvlan" />
+ <property name="feature-rx-all" />
+ <property name="feature-rx-fcs" />
+ <property name="feature-rx-gro-hw" />
+ <property name="feature-rx-udp_tunnel-port-offload" />
+ <property name="feature-rx-vlan-filter" />
+ <property name="feature-rx-vlan-stag-filter" />
+ <property name="feature-rx-vlan-stag-hw-parse" />
+ <property name="feature-sg" />
+ <property name="feature-tls-hw-record" />
+ <property name="feature-tls-hw-tx-offload" />
+ <property name="feature-tso" />
+ <property name="feature-tx" />
+ <property name="feature-txvlan" />
+ <property name="feature-tx-checksum-fcoe-crc" />
+ <property name="feature-tx-checksum-ipv4" />
+ <property name="feature-tx-checksum-ipv6" />
+ <property name="feature-tx-checksum-ip-generic" />
+ <property name="feature-tx-checksum-sctp" />
+ <property name="feature-tx-esp-segmentation" />
+ <property name="feature-tx-fcoe-segmentation" />
+ <property name="feature-tx-gre-csum-segmentation" />
+ <property name="feature-tx-gre-segmentation" />
+ <property name="feature-tx-gso-partial" />
+ <property name="feature-tx-gso-robust" />
+ <property name="feature-tx-ipxip4-segmentation" />
+ <property name="feature-tx-ipxip6-segmentation" />
+ <property name="feature-tx-nocache-copy" />
+ <property name="feature-tx-scatter-gather" />
+ <property name="feature-tx-scatter-gather-fraglist" />
+ <property name="feature-tx-sctp-segmentation" />
+ <property name="feature-tx-tcp6-segmentation" />
+ <property name="feature-tx-tcp-ecn-segmentation" />
+ <property name="feature-tx-tcp-mangleid-segmentation" />
+ <property name="feature-tx-tcp-segmentation" />
+ <property name="feature-tx-udp-segmentation" />
+ <property name="feature-tx-udp_tnl-csum-segmentation" />
+ <property name="feature-tx-udp_tnl-segmentation" />
+ <property name="feature-tx-vlan-stag-hw-insert" />
+ <property name="coalesce-adaptive-rx" />
+ <property name="coalesce-adaptive-tx" />
+ <property name="coalesce-pkt-rate-high" />
+ <property name="coalesce-pkt-rate-low" />
+ <property name="coalesce-rx-frames" />
+ <property name="coalesce-rx-frames-irq" />
+ <property name="coalesce-rx-frames-high" />
+ <property name="coalesce-rx-frames-low" />
+ <property name="coalesce-rx-usecs" />
+ <property name="coalesce-rx-usecs-irq" />
+ <property name="coalesce-rx-usecs-high" />
+ <property name="coalesce-rx-usecs-low" />
+ <property name="coalesce-sample-interval" />
+ <property name="coalesce-stats-block-usecs" />
+ <property name="coalesce-tx-frames" />
+ <property name="coalesce-tx-frames-irq" />
+ <property name="coalesce-tx-frames-high" />
+ <property name="coalesce-tx-frames-low" />
+ <property name="coalesce-tx-usecs" />
+ <property name="coalesce-tx-usecs-irq" />
+ <property name="coalesce-tx-usecs-high" />
+ <property name="coalesce-tx-usecs-low" />
+ <property name="ring-rx" />
+ <property name="ring-rx-jumbo" />
+ <property name="ring-rx-mini" />
+ <property name="ring-tx" />
+ </setting>
+ <setting name="generic" >
+ </setting>
+ <setting name="gsm" >
+ <property name="auto-config"
+ description="When TRUE, the settings such as APN, username, or password will default to values that match the network the modem will register to in the Mobile Broadband Provider database." />
+ <property name="number"
+ description="Legacy setting that used to help establishing PPP data sessions for GSM-based modems. Deprecated: 1" />
+ <property name="username"
+ alias="user"
+ description="The username used to authenticate with the network, if required. Many providers do not require a username, or accept any username. But if a username is required, it is specified here." />
+ <property name="password"
+ alias="password"
+ description="The password used to authenticate with the network, if required. Many providers do not require a password, or accept any password. But if a password is required, it is specified here." />
+ <property name="password-flags"
+ description="Flags indicating how to handle the &quot;password&quot; property." />
+ <property name="apn"
+ alias="apn"
+ description="The GPRS Access Point Name specifying the APN used when establishing a data session with the GSM-based network. The APN often determines how the user will be billed for their network usage and whether the user has access to the Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user&apos;s mobile broadband plan. The APN may only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section 14.9." />
+ <property name="network-id"
+ description="The Network ID (GSM LAI format, ie MCC-MNC) to force specific network registration. If the Network ID is specified, NetworkManager will attempt to force the device to register only on the specified network. This can be used to ensure that the device does not roam when direct roaming control of the device is not otherwise possible." />
+ <property name="pin"
+ description="If the SIM is locked with a PIN it must be unlocked before any other operations are requested. Specify the PIN here to allow operation of the device." />
+ <property name="pin-flags"
+ description="Flags indicating how to handle the &quot;pin&quot; property." />
+ <property name="home-only"
+ description="When TRUE, only connections to the home network will be allowed. Connections to roaming networks will not be made." />
+ <property name="device-id"
+ description="The device unique identifier (as given by the WWAN management service) which this connection applies to. If given, the connection will only apply to the specified device." />
+ <property name="sim-id"
+ description="The SIM card unique identifier (as given by the WWAN management service) which this connection applies to. If given, the connection will apply to any device also allowed by &quot;device-id&quot; which contains a SIM card matching the given identifier." />
+ <property name="sim-operator-id"
+ description="A MCC/MNC string like &quot;310260&quot; or &quot;21601&quot; identifying the specific mobile network operator which this connection applies to. If given, the connection will apply to any device also allowed by &quot;device-id&quot; and &quot;sim-id&quot; which contains a SIM card provisioned by the given operator." />
+ <property name="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
+ </setting>
+ <setting name="hostname" >
+ <property name="priority"
+ description="The relative priority of this connection to determine the system hostname. A lower numerical value is better (higher priority). A connection with higher priority is considered before connections with lower priority. If the value is zero, it can be overridden by a global value from NetworkManager configuration. If the property doesn&apos;t have a value in the global configuration, the value is assumed to be 100. Negative values have the special effect of excluding other connections with a greater numerical priority value; so in presence of at least one negative priority, only connections with the lowest priority value will be used to determine the hostname." />
+ <property name="from-dhcp"
+ description="Whether the system hostname can be determined from DHCP on this connection. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn&apos;t have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1)." />
+ <property name="from-dns-lookup"
+ description="Whether the system hostname can be determined from reverse DNS lookup of addresses on this device. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn&apos;t have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1)." />
+ <property name="only-from-default"
+ description="If set to NM_TERNARY_TRUE (1), NetworkManager attempts to get the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device has the default route for the given address family (IPv4/IPv6). If set to NM_TERNARY_FALSE (0), the hostname can be set from this device even if it doesn&apos;t have the default route. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn&apos;t have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1)." />
+ </setting>
+ <setting name="infiniband" >
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, this connection will only apply to the IPoIB device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
+ <property name="mtu"
+ alias="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
+ <property name="transport-mode"
+ alias="transport-mode"
+ description="The IP-over-InfiniBand transport mode. Either &quot;datagram&quot; or &quot;connected&quot;." />
+ <property name="p-key"
+ alias="p-key"
+ description="The InfiniBand P_Key to use for this device. A value of -1 means to use the default P_Key (aka &quot;the P_Key at index 0&quot;). Otherwise, it is a 16-bit unsigned integer, whose high bit is set if it is a &quot;full membership&quot; P_Key." />
+ <property name="parent"
+ alias="parent"
+ description="The interface name of the parent device of this device. Normally NULL, but if the &quot;p_key&quot; property is set, then you must specify the base device by setting either this property or &quot;mac-address&quot;." />
+ </setting>
+ <setting name="ip-tunnel" >
+ <property name="mode"
+ alias="mode"
+ description="The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or NM_IP_TUNNEL_MODE_GRE (2)." />
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID the new device will be bound to so that tunneled packets will only be routed via that interface." />
+ <property name="local"
+ alias="local"
+ description="The local endpoint of the tunnel; the value can be empty, otherwise it must contain an IPv4 or IPv6 address." />
+ <property name="remote"
+ alias="remote"
+ description="The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 address." />
+ <property name="ttl"
+ description="The TTL to assign to tunneled packets. 0 is a special value meaning that packets inherit the TTL value." />
+ <property name="tos"
+ description="The type of service (IPv4) or traffic class (IPv6) field to be set on tunneled packets." />
+ <property name="path-mtu-discovery"
+ description="Whether to enable Path MTU Discovery on this tunnel." />
+ <property name="input-key"
+ description="The key used for tunnel input packets; the property is valid only for certain tunnel modes (GRE, IP6GRE). If empty, no key is used." />
+ <property name="output-key"
+ description="The key used for tunnel output packets; the property is valid only for certain tunnel modes (GRE, IP6GRE). If empty, no key is used." />
+ <property name="encapsulation-limit"
+ description="How many additional levels of encapsulation are permitted to be prepended to packets. This property applies only to IPv6 tunnels." />
+ <property name="flow-label"
+ description="The flow label to assign to tunnel packets. This property applies only to IPv6 tunnels." />
+ <property name="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple fragments." />
+ <property name="flags"
+ description="Tunnel flags. Currently, the following values are supported: NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT (0x1), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_TCLASS (0x2), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FLOWLABEL (0x4), NM_IP_TUNNEL_FLAG_IP6_MIP6_DEV (0x8), NM_IP_TUNNEL_FLAG_IP6_RCV_DSCP_COPY (0x10), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK (0x20). They are valid only for IPv6 tunnels." />
+ </setting>
+ <setting name="ipv4" >
+ <property name="method"
+ description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;disabled&quot;, &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration. The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
+ <property name="dns"
+ description="Array of IP addresses of DNS servers." />
+ <property name="dns-search"
+ description="Array of DNS search domains. Domains starting with a tilde (&apos;~&apos;) are considered &apos;routing&apos; domains and are used only to decide the interface over which a query must be forwarded; they are not used to complete unqualified host names. When using a DNS plugin that supports Conditional Forwarding or Split DNS, then the search domains specify which name servers to query. This makes the behavior different from running with plain /etc/resolv.conf. For more information see also the dns-priority setting." />
+ <property name="dns-options"
+ description="Array of DNS options as described in man 5 resolv.conf. NULL means that the options are unset and left at the default. In this case NetworkManager will use default options. This is distinct from an empty list of properties. The currently supported options are &quot;attempts&quot;, &quot;debug&quot;, &quot;edns0&quot;, &quot;inet6&quot;, &quot;ip6-bytestring&quot;, &quot;ip6-dotint&quot;, &quot;ndots&quot;, &quot;no-check-names&quot;, &quot;no-ip6-dotint&quot;, &quot;no-reload&quot;, &quot;no-tld-query&quot;, &quot;rotate&quot;, &quot;single-request&quot;, &quot;single-request-reopen&quot;, &quot;timeout&quot;, &quot;trust-ad&quot;, &quot;use-vc&quot;. The &quot;trust-ad&quot; setting is only honored if the profile contributes name servers to resolv.conf, and if all contributing profiles have &quot;trust-ad&quot; enabled." />
+ <property name="dns-priority"
+ description="DNS servers priority. The relative priority for DNS servers specified by this setting. A lower numerical value is better (higher priority). Negative values have the special effect of excluding other configurations with a greater numerical priority value; so in presence of at least one negative priority, only DNS servers from connections with the lowest priority value will be used. To avoid all DNS leaks, set the priority of the profile that should be used to the most negative value of all active connections profiles. Zero selects a globally configured default value. If the latter is missing or zero too, it defaults to 50 for VPNs (including WireGuard) and 100 for other connections. Note that the priority is to order DNS settings for multiple active connections. It does not disambiguate multiple DNS servers within the same connection profile. When multiple devices have configurations with the same priority, VPNs will be considered first, then devices with the best (lowest metric) default route and then all other devices. When using dns=default, servers with higher priority will be on top of resolv.conf. To prioritize a given server over another one within the same connection, just specify them in the desired order. Note that commonly the resolver tries name servers in /etc/resolv.conf in the order listed, proceeding with the next server in the list on failure. See for example the &quot;rotate&quot; option of the dns-options setting. If there are any negative DNS priorities, then only name servers from the devices with that lowest priority will be considered. When using a DNS resolver that supports Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-resolved settings), each connection is used to query domains in its search list. The search domains determine which name servers to ask, and the DNS priority is used to prioritize name servers based on the domain. Queries for domains not present in any search list are routed through connections having the &apos;~.&apos; special wildcard domain, which is added automatically to connections with the default route (or can be added manually). When multiple connections specify the same domain, the one with the best priority (lowest numerical value) wins. If a sub domain is configured on another interface it will be accepted regardless the priority, unless parent domain on the other interface has a negative priority, which causes the sub domain to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly configuring DNS priorities and the search domains, so that only name servers of the desired interface are configured." />
+ <property name="addresses"
+ alias="ip4"
+ description="Array of IP addresses." />
+ <property name="gateway"
+ alias="gw4"
+ description="The gateway associated with this configuration. This is only meaningful if &quot;addresses&quot; is also set. The gateway&apos;s main purpose is to control the next hop of the standard default route on the device. Hence, the gateway property conflicts with &quot;never-default&quot; and will be automatically dropped if the IP configuration is set to never-default. As an alternative to set the gateway, configure a static default route with /0 as prefix length." />
+ <property name="routes"
+ description="Array of IP routes." />
+ <property name="route-metric"
+ description="The default metric for routes that don&apos;t explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don&apos;t have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
+ <property name="route-table"
+ description="Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager." />
+ <property name="routing-rules" />
+ <property name="ignore-auto-routes"
+ description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
+ <property name="ignore-auto-dns"
+ description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured name servers and search domains are ignored and only name servers and search domains specified in the &quot;dns&quot; and &quot;dns-search&quot; properties, if any, are used." />
+ <property name="dhcp-client-id"
+ description="A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string (&apos;aa:bb:cc&apos;) it is interpreted as a binary client ID, in which case the first byte is assumed to be the &apos;type&apos; field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. &apos;01:xx:xx:xx:xx:xx:xx&apos; where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the &apos;type&apos; field is set to 0. The special values &quot;mac&quot; and &quot;perm-mac&quot; are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet (01). Currently, these options only work for ethernet type of links. The special value &quot;duid&quot; generates a RFC4361-compliant client identifier based on a hash of the interface name as IAID and /etc/machine-id. The special value &quot;stable&quot; is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If you set the stable-id, you may want to include the &quot;${DEVICE}&quot; or &quot;${MAC}&quot; specifier to get a per-device key. If unset, a globally configured default is used. If still unset, the default depends on the DHCP plugin." />
+ <property name="dhcp-iaid"
+ description="A string containing the &quot;Identity Association Identifier&quot; (IAID) used by the DHCP client. The property is a 32-bit decimal value or a special value among &quot;mac&quot;, &quot;perm-mac&quot;, &quot;ifname&quot; and &quot;stable&quot;. When set to &quot;mac&quot; (or &quot;perm-mac&quot;), the last 4 bytes of the current (or permanent) MAC address are used as IAID. When set to &quot;ifname&quot;, the IAID is computed by hashing the interface name. The special value &quot;stable&quot; can be used to generate an IAID based on the stable-id (see connection.stable-id), a per-host key and the interface name. When the property is unset, the value from global configuration is used; if no global default is set then the IAID is assumed to be &quot;ifname&quot;. Note that at the moment this property is ignored for IPv6 by dhclient, which always derives the IAID from the MAC address." />
+ <property name="dhcp-timeout"
+ description="A timeout for a DHCP transaction in seconds. If zero (the default), a globally configured default is used. If still unspecified, a device specific timeout is used (usually 45 seconds). Set to 2147483647 (MAXINT32) for infinity." />
+ <property name="dhcp-send-hostname"
+ description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer. If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
+ <property name="dhcp-hostname"
+ description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
+ <property name="dhcp-fqdn"
+ description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified FQDN will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-hostname&quot; are mutually exclusive and cannot be set at the same time." />
+ <property name="dhcp-hostname-flags"
+ description="Flags for the DHCP hostname and FQDN. Currently, this property only includes flags to control the FQDN flags set in the DHCP FQDN option. Supported FQDN flags are NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) and NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE (0x4). When no FQDN flag is set and NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is set, the DHCP FQDN option will contain no flag. Otherwise, if no FQDN flag is set and NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is not set, the standard FQDN flags are set in the request: NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) for IPv4 and NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1) for IPv6. When this property is set to the default value NM_DHCP_HOSTNAME_FLAG_NONE (0x0), a global default is looked up in NetworkManager configuration. If that value is unset or also NM_DHCP_HOSTNAME_FLAG_NONE (0x0), then the standard FQDN flags described above are sent in the DHCP requests." />
+ <property name="never-default"
+ description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
+ <property name="may-fail"
+ description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out. Note that at least one IP configuration must succeed or overall network configuration will still fail. For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
+ <property name="dad-timeout"
+ description="Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network. If an address conflict is detected, the activation will fail. A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero). A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4." />
+ <property name="dhcp-vendor-class-identifier"
+ description="The Vendor Class Identifier DHCP option (60). Special characters in the data string may be escaped using C-style escapes, nevertheless this property cannot contain nul bytes. If the per-profile value is unspecified (the default), a global connection default gets consulted. If still unspecified, the DHCP option is not sent to the server. Since 1.28" />
+ <property name="dhcp-reject-servers"
+ description="Array of servers from which DHCP offers must be rejected. This property is useful to avoid getting a lease from misconfigured or rogue servers. For DHCPv4, each element must be an IPv4 address, optionally followed by a slash and a prefix length (e.g. &quot;192.168.122.0/24&quot;). This property is currently not implemented for DHCPv6." />
+ </setting>
+ <setting name="ipv6" >
+ <property name="method"
+ description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;disabled&quot;, &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration. The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
+ <property name="dns"
+ description="Array of IP addresses of DNS servers." />
+ <property name="dns-search"
+ description="Array of DNS search domains. Domains starting with a tilde (&apos;~&apos;) are considered &apos;routing&apos; domains and are used only to decide the interface over which a query must be forwarded; they are not used to complete unqualified host names. When using a DNS plugin that supports Conditional Forwarding or Split DNS, then the search domains specify which name servers to query. This makes the behavior different from running with plain /etc/resolv.conf. For more information see also the dns-priority setting." />
+ <property name="dns-options"
+ description="Array of DNS options as described in man 5 resolv.conf. NULL means that the options are unset and left at the default. In this case NetworkManager will use default options. This is distinct from an empty list of properties. The currently supported options are &quot;attempts&quot;, &quot;debug&quot;, &quot;edns0&quot;, &quot;inet6&quot;, &quot;ip6-bytestring&quot;, &quot;ip6-dotint&quot;, &quot;ndots&quot;, &quot;no-check-names&quot;, &quot;no-ip6-dotint&quot;, &quot;no-reload&quot;, &quot;no-tld-query&quot;, &quot;rotate&quot;, &quot;single-request&quot;, &quot;single-request-reopen&quot;, &quot;timeout&quot;, &quot;trust-ad&quot;, &quot;use-vc&quot;. The &quot;trust-ad&quot; setting is only honored if the profile contributes name servers to resolv.conf, and if all contributing profiles have &quot;trust-ad&quot; enabled." />
+ <property name="dns-priority"
+ description="DNS servers priority. The relative priority for DNS servers specified by this setting. A lower numerical value is better (higher priority). Negative values have the special effect of excluding other configurations with a greater numerical priority value; so in presence of at least one negative priority, only DNS servers from connections with the lowest priority value will be used. To avoid all DNS leaks, set the priority of the profile that should be used to the most negative value of all active connections profiles. Zero selects a globally configured default value. If the latter is missing or zero too, it defaults to 50 for VPNs (including WireGuard) and 100 for other connections. Note that the priority is to order DNS settings for multiple active connections. It does not disambiguate multiple DNS servers within the same connection profile. When multiple devices have configurations with the same priority, VPNs will be considered first, then devices with the best (lowest metric) default route and then all other devices. When using dns=default, servers with higher priority will be on top of resolv.conf. To prioritize a given server over another one within the same connection, just specify them in the desired order. Note that commonly the resolver tries name servers in /etc/resolv.conf in the order listed, proceeding with the next server in the list on failure. See for example the &quot;rotate&quot; option of the dns-options setting. If there are any negative DNS priorities, then only name servers from the devices with that lowest priority will be considered. When using a DNS resolver that supports Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-resolved settings), each connection is used to query domains in its search list. The search domains determine which name servers to ask, and the DNS priority is used to prioritize name servers based on the domain. Queries for domains not present in any search list are routed through connections having the &apos;~.&apos; special wildcard domain, which is added automatically to connections with the default route (or can be added manually). When multiple connections specify the same domain, the one with the best priority (lowest numerical value) wins. If a sub domain is configured on another interface it will be accepted regardless the priority, unless parent domain on the other interface has a negative priority, which causes the sub domain to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly configuring DNS priorities and the search domains, so that only name servers of the desired interface are configured." />
+ <property name="addresses"
+ alias="ip6"
+ description="Array of IP addresses." />
+ <property name="gateway"
+ alias="gw6"
+ description="The gateway associated with this configuration. This is only meaningful if &quot;addresses&quot; is also set. The gateway&apos;s main purpose is to control the next hop of the standard default route on the device. Hence, the gateway property conflicts with &quot;never-default&quot; and will be automatically dropped if the IP configuration is set to never-default. As an alternative to set the gateway, configure a static default route with /0 as prefix length." />
+ <property name="routes"
+ description="Array of IP routes." />
+ <property name="route-metric"
+ description="The default metric for routes that don&apos;t explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don&apos;t have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
+ <property name="route-table"
+ description="Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager." />
+ <property name="routing-rules" />
+ <property name="ignore-auto-routes"
+ description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
+ <property name="ignore-auto-dns"
+ description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured name servers and search domains are ignored and only name servers and search domains specified in the &quot;dns&quot; and &quot;dns-search&quot; properties, if any, are used." />
+ <property name="never-default"
+ description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
+ <property name="may-fail"
+ description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out. Note that at least one IP configuration must succeed or overall network configuration will still fail. For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
+ <property name="ip6-privacy"
+ description="Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64. This enhances privacy, but could cause problems in some applications, on the other hand. The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses). Having a per-connection setting set to &quot;-1&quot; (unknown) means fallback to global configuration &quot;ipv6.ip6-privacy&quot;. If also global configuration is unspecified or set to &quot;-1&quot;, fallback to read &quot;/proc/sys/net/ipv6/conf/default/use_tempaddr&quot;. Note that this setting is distinct from the Stable Privacy addresses that can be enabled with the &quot;addr-gen-mode&quot; property&apos;s &quot;stable-privacy&quot; setting as another way of avoiding host tracking with IPv6 addresses." />
+ <property name="addr-gen-mode"
+ description="Configure method for creating the address for use with RFC4862 IPv6 Stateless Address Autoconfiguration. The permitted values are: NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 (0) or NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY (1). If the property is set to EUI64, the addresses will be generated using the interface tokens derived from hardware address. This makes the host part of the address to stay constant, making it possible to track host&apos;s presence when it changes networks. The address changes when the interface hardware is replaced. The value of stable-privacy enables use of cryptographically secure hash of a secret host-specific key along with the connection&apos;s stable-id and the network address as specified by RFC7217. This makes it impossible to use the address track host&apos;s presence, and makes the address stable when the network interface hardware is replaced. On D-Bus, the absence of an addr-gen-mode setting equals enabling stable-privacy. For keyfile plugin, the absence of the setting on disk means EUI64 so that the property doesn&apos;t change on upgrade from older versions. Note that this setting is distinct from the Privacy Extensions as configured by &quot;ip6-privacy&quot; property and it does not affect the temporary addresses configured with this option." />
+ <property name="ra-timeout"
+ description="A timeout for waiting Router Advertisements in seconds. If zero (the default), a globally configured default is used. If still unspecified, the timeout depends on the sysctl settings of the device. Set to 2147483647 (MAXINT32) for infinity." />
+ <property name="dhcp-duid"
+ description="A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string (&apos;aa:bb:cc&apos;) it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option. The special value &quot;lease&quot; will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and &quot;dhclient&quot; is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id. The special values &quot;llt&quot; and &quot;ll&quot; will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk. The special values &quot;stable-llt&quot;, &quot;stable-ll&quot; and &quot;stable-uuid&quot; will generate a DUID of the corresponding type, derived from the connection&apos;s stable-id and a per-host unique key. You may want to include the &quot;${DEVICE}&quot; or &quot;${MAC}&quot; specifier in the stable-id, in case this profile gets activated on multiple devices. So, the link-layer address of &quot;stable-ll&quot; and &quot;stable-llt&quot; will be a generated address derived from the stable id. The DUID-LLT time value in the &quot;stable-llt&quot; option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in &quot;llt&quot;). When the property is unset, the global value provided for &quot;ipv6.dhcp-duid&quot; is used. If no global value is provided, the default &quot;lease&quot; value is assumed." />
+ <property name="dhcp-iaid"
+ description="A string containing the &quot;Identity Association Identifier&quot; (IAID) used by the DHCP client. The property is a 32-bit decimal value or a special value among &quot;mac&quot;, &quot;perm-mac&quot;, &quot;ifname&quot; and &quot;stable&quot;. When set to &quot;mac&quot; (or &quot;perm-mac&quot;), the last 4 bytes of the current (or permanent) MAC address are used as IAID. When set to &quot;ifname&quot;, the IAID is computed by hashing the interface name. The special value &quot;stable&quot; can be used to generate an IAID based on the stable-id (see connection.stable-id), a per-host key and the interface name. When the property is unset, the value from global configuration is used; if no global default is set then the IAID is assumed to be &quot;ifname&quot;. Note that at the moment this property is ignored for IPv6 by dhclient, which always derives the IAID from the MAC address." />
+ <property name="dhcp-timeout"
+ description="A timeout for a DHCP transaction in seconds. If zero (the default), a globally configured default is used. If still unspecified, a device specific timeout is used (usually 45 seconds). Set to 2147483647 (MAXINT32) for infinity." />
+ <property name="dhcp-send-hostname"
+ description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer. If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
+ <property name="dhcp-hostname"
+ description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
+ <property name="dhcp-hostname-flags"
+ description="Flags for the DHCP hostname and FQDN. Currently, this property only includes flags to control the FQDN flags set in the DHCP FQDN option. Supported FQDN flags are NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) and NM_DHCP_HOSTNAME_FLAG_FQDN_NO_UPDATE (0x4). When no FQDN flag is set and NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is set, the DHCP FQDN option will contain no flag. Otherwise, if no FQDN flag is set and NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS (0x8) is not set, the standard FQDN flags are set in the request: NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1), NM_DHCP_HOSTNAME_FLAG_FQDN_ENCODED (0x2) for IPv4 and NM_DHCP_HOSTNAME_FLAG_FQDN_SERV_UPDATE (0x1) for IPv6. When this property is set to the default value NM_DHCP_HOSTNAME_FLAG_NONE (0x0), a global default is looked up in NetworkManager configuration. If that value is unset or also NM_DHCP_HOSTNAME_FLAG_NONE (0x0), then the standard FQDN flags described above are sent in the DHCP requests." />
+ <property name="token"
+ description="Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 tokenized interface identifiers. Useful with eui64 addr-gen-mode." />
+ </setting>
+ <setting name="macsec" >
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created. If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
+ <property name="mode"
+ alias="mode"
+ description="Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key Agreement) is obtained." />
+ <property name="encrypt"
+ alias="encrypt"
+ description="Whether the transmitted traffic must be encrypted." />
+ <property name="mka-cak"
+ alias="cak"
+ description="The pre-shared CAK (Connectivity Association Key) for MACsec Key Agreement." />
+ <property name="mka-cak-flags"
+ description="Flags indicating how to handle the &quot;mka-cak&quot; property." />
+ <property name="mka-ckn"
+ alias="ckn"
+ description="The pre-shared CKN (Connectivity-association Key Name) for MACsec Key Agreement." />
+ <property name="port"
+ alias="port"
+ description="The port component of the SCI (Secure Channel Identifier), between 1 and 65534." />
+ <property name="validation"
+ description="Specifies the validation mode for incoming frames." />
+ <property name="send-sci"
+ description="Specifies whether the SCI (Secure Channel Identifier) is included in every packet." />
+ </setting>
+ <setting name="macvlan" >
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID from which this MAC-VLAN interface should be created. If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
+ <property name="mode"
+ alias="mode"
+ description="The macvlan mode, which specifies the communication mechanism between multiple macvlans on the same lower device." />
+ <property name="promiscuous"
+ description="Whether the interface should be put in promiscuous mode." />
+ <property name="tap"
+ alias="tap"
+ description="Whether the interface should be a MACVTAP." />
+ </setting>
+ <setting name="match" >
+ <property name="interface-name"
+ description="A list of interface names to match. Each element is a shell wildcard pattern. An element can be prefixed with a pipe symbol (|) or an ampersand (&amp;). The former means that the element is optional and the latter means that it is mandatory. If there are any optional elements, than the match evaluates to true if at least one of the optional element matches (logical OR). If there are any mandatory elements, then they all must match (logical AND). By default, an element is optional. This means that an element &quot;foo&quot; behaves the same as &quot;|foo&quot;. An element can also be inverted with exclamation mark (!) between the pipe symbol (or the ampersand) and before the pattern. Note that &quot;!foo&quot; is a shortcut for the mandatory match &quot;&amp;!foo&quot;. Finally, a backslash can be used at the beginning of the element (after the optional special characters) to escape the start of the pattern. For example, &quot;&amp;\!a&quot; is an mandatory match for literally &quot;!a&quot;." />
+ <property name="kernel-command-line"
+ description="A list of kernel command line arguments to match. This may be used to check whether a specific kernel command line option is set (or if prefixed with the exclamation mark unset). The argument must either be a single word, or an assignment (i.e. two words, separated &quot;=&quot;). In the former case the kernel command line is searched for the word appearing as is, or as left hand side of an assignment. In the latter case, the exact assignment is looked for with right and left hand side matching. See NMSettingMatch:interface-name for how special characters &apos;|&apos;, &apos;&amp;&apos;, &apos;!&apos; and &apos;\&apos; are used for optional and mandatory matches and inverting the pattern." />
+ <property name="driver"
+ description="A list of driver names to match. Each element is a shell wildcard pattern. See NMSettingMatch:interface-name for how special characters &apos;|&apos;, &apos;&amp;&apos;, &apos;!&apos; and &apos;\&apos; are used for optional and mandatory matches and inverting the pattern." />
+ <property name="path"
+ description="A list of paths to match against the ID_PATH udev property of devices. ID_PATH represents the topological persistent path of a device. It typically contains a subsystem string (pci, usb, platform, etc.) and a subsystem-specific identifier. For PCI devices the path has the form &quot;pci-$domain:$bus:$device.$function&quot;, where each variable is an hexadecimal value; for example &quot;pci-0000:0a:00.0&quot;. The path of a device can be obtained with &quot;udevadm info /sys/class/net/$dev | grep ID_PATH=&quot; or by looking at the &quot;path&quot; property exported by NetworkManager (&quot;nmcli -f general.path device show $dev&quot;). Each element of the list is a shell wildcard pattern. See NMSettingMatch:interface-name for how special characters &apos;|&apos;, &apos;&amp;&apos;, &apos;!&apos; and &apos;\&apos; are used for optional and mandatory matches and inverting the pattern." />
+ </setting>
+ <setting name="ovs-bridge" >
+ <property name="fail-mode"
+ description="The bridge failure mode. One of &quot;secure&quot;, &quot;standalone&quot; or empty." />
+ <property name="mcast-snooping-enable"
+ description="Enable or disable multicast snooping." />
+ <property name="rstp-enable"
+ description="Enable or disable RSTP." />
+ <property name="stp-enable"
+ description="Enable or disable STP." />
+ <property name="datapath-type"
+ description="The data path type. One of &quot;system&quot;, &quot;netdev&quot; or empty." />
+ </setting>
+ <setting name="ovs-dpdk" >
+ <property name="devargs"
+ description="Open vSwitch DPDK device arguments." />
+ </setting>
+ <setting name="ovs-external-ids" >
+ </setting>
+ <setting name="ovs-interface" >
+ <property name="type"
+ description="The interface type. Either &quot;internal&quot;, &quot;system&quot;, &quot;patch&quot;, &quot;dpdk&quot;, or empty." />
+ </setting>
+ <setting name="ovs-patch" >
+ <property name="peer"
+ description="Specifies the name of the interface for the other side of the patch. The patch on the other side must also set this interface as peer." />
+ </setting>
+ <setting name="ovs-port" >
+ <property name="vlan-mode"
+ description="The VLAN mode. One of &quot;access&quot;, &quot;native-tagged&quot;, &quot;native-untagged&quot;, &quot;trunk&quot; or unset." />
+ <property name="tag"
+ description="The VLAN tag in the range 0-4095." />
+ <property name="lacp"
+ description="LACP mode. One of &quot;active&quot;, &quot;off&quot;, or &quot;passive&quot;." />
+ <property name="bond-mode"
+ description="Bonding mode. One of &quot;active-backup&quot;, &quot;balance-slb&quot;, or &quot;balance-tcp&quot;." />
+ <property name="bond-updelay"
+ description="The time port must be active before it starts forwarding traffic." />
+ <property name="bond-downdelay"
+ description="The time port must be inactive in order to be considered down." />
+ </setting>
+ <setting name="ppp" >
+ <property name="noauth"
+ description="If TRUE, do not require the other side (usually the PPP server) to authenticate itself to the client. If FALSE, require authentication from the remote side. In almost all cases, this should be TRUE." />
+ <property name="refuse-eap"
+ description="If TRUE, the EAP authentication method will not be used." />
+ <property name="refuse-pap"
+ description="If TRUE, the PAP authentication method will not be used." />
+ <property name="refuse-chap"
+ description="If TRUE, the CHAP authentication method will not be used." />
+ <property name="refuse-mschap"
+ description="If TRUE, the MSCHAP authentication method will not be used." />
+ <property name="refuse-mschapv2"
+ description="If TRUE, the MSCHAPv2 authentication method will not be used." />
+ <property name="nobsdcomp"
+ description="If TRUE, BSD compression will not be requested." />
+ <property name="nodeflate"
+ description="If TRUE, &quot;deflate&quot; compression will not be requested." />
+ <property name="no-vj-comp"
+ description="If TRUE, Van Jacobsen TCP header compression will not be requested." />
+ <property name="require-mppe"
+ description="If TRUE, MPPE (Microsoft Point-to-Point Encryption) will be required for the PPP session. If either 64-bit or 128-bit MPPE is not available the session will fail. Note that MPPE is not used on mobile broadband connections." />
+ <property name="require-mppe-128"
+ description="If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required for the PPP session, and the &quot;require-mppe&quot; property must also be set to TRUE. If 128-bit MPPE is not available the session will fail." />
+ <property name="mppe-stateful"
+ description="If TRUE, stateful MPPE is used. See pppd documentation for more information on stateful MPPE." />
+ <property name="crtscts"
+ description="If TRUE, specify that pppd should set the serial port to use hardware flow control with RTS and CTS signals. This value should normally be set to FALSE." />
+ <property name="baud"
+ description="If non-zero, instruct pppd to set the serial port to the specified baudrate. This value should normally be left as 0 to automatically choose the speed." />
+ <property name="mru"
+ description="If non-zero, instruct pppd to request that the peer send packets no larger than the specified size. If non-zero, the MRU should be between 128 and 16384." />
+ <property name="mtu"
+ description="If non-zero, instruct pppd to send packets no larger than the specified size." />
+ <property name="lcp-echo-failure"
+ description="If non-zero, instruct pppd to presume the connection to the peer has failed if the specified number of LCP echo-requests go unanswered by the peer. The &quot;lcp-echo-interval&quot; property must also be set to a non-zero value if this property is used." />
+ <property name="lcp-echo-interval"
+ description="If non-zero, instruct pppd to send an LCP echo-request frame to the peer every n seconds (where n is the specified value). Note that some PPP peers will respond to echo requests and some will not, and it is not possible to autodetect this." />
+ </setting>
+ <setting name="pppoe" >
+ <property name="parent"
+ alias="parent"
+ description="If given, specifies the parent interface name on which this PPPoE connection should be created. If this property is not specified, the connection is activated on the interface specified in &quot;interface-name&quot; of NMSettingConnection." />
+ <property name="service"
+ alias="service"
+ description="If specified, instruct PPPoE to only initiate sessions with access concentrators that provide the specified service. For most providers, this should be left blank. It is only required if there are multiple access concentrators or a specific service is known to be required." />
+ <property name="username"
+ alias="username"
+ description="Username used to authenticate with the PPPoE service." />
+ <property name="password"
+ alias="password"
+ description="Password used to authenticate with the PPPoE service." />
+ <property name="password-flags"
+ description="Flags indicating how to handle the &quot;password&quot; property." />
+ </setting>
+ <setting name="proxy" >
+ <property name="method"
+ alias="method"
+ description="Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)" />
+ <property name="browser-only"
+ alias="browser-only"
+ description="Whether the proxy configuration is for browser only." />
+ <property name="pac-url"
+ alias="pac-url"
+ description="PAC URL for obtaining PAC file." />
+ <property name="pac-script"
+ alias="pac-script"
+ description="PAC script for the connection." />
+ </setting>
+ <setting name="serial" >
+ <property name="baud"
+ description="Speed to use for communication over the serial port. Note that this value usually has no effect for mobile broadband modems as they generally ignore speed settings and use the highest available speed." />
+ <property name="bits"
+ description="Byte-width of the serial communication. The 8 in &quot;8n1&quot; for example." />
+ <property name="parity"
+ description="Parity setting of the serial port." />
+ <property name="stopbits"
+ description="Number of stop bits for communication on the serial port. Either 1 or 2. The 1 in &quot;8n1&quot; for example." />
+ <property name="send-delay"
+ description="Time to delay between each byte sent to the modem, in microseconds." />
+ </setting>
+ <setting name="sriov" >
+ <property name="total-vfs"
+ description="The total number of virtual functions to create. Note that when the sriov setting is present NetworkManager enforces the number of virtual functions on the interface (also when it is zero) during activation and resets it upon deactivation. To prevent any changes to SR-IOV parameters don&apos;t add a sriov setting to the connection." />
+ <property name="vfs"
+ description="Array of virtual function descriptors. Each VF descriptor is a dictionary mapping attribute names to GVariant values. The &apos;index&apos; entry is mandatory for each VF. When represented as string a VF is in the form: &quot;INDEX [ATTR=VALUE[ ATTR=VALUE]...]&quot;. for example: &quot;2 mac=00:11:22:33:44:55 spoof-check=true&quot;. Multiple VFs can be specified using a comma as separator. Currently, the following attributes are supported: mac, spoof-check, trust, min-tx-rate, max-tx-rate, vlans. The &quot;vlans&quot; attribute is represented as a semicolon-separated list of VLAN descriptors, where each descriptor has the form &quot;ID[.PRIORITY[.PROTO]]&quot;. PROTO can be either &apos;q&apos; for 802.1Q (the default) or &apos;ad&apos; for 802.1ad." />
+ <property name="autoprobe-drivers"
+ description="Whether to autoprobe virtual functions by a compatible driver. If set to NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver and if this succeeds a new network interface will be instantiated for each VF. If set to NM_TERNARY_FALSE (0), VFs will not be claimed and no network interfaces will be created for them. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in case the global default is unspecified it is assumed to be NM_TERNARY_TRUE (1)." />
+ </setting>
+ <setting name="tc" >
+ <property name="qdiscs"
+ description="Array of TC queueing disciplines." />
+ <property name="tfilters"
+ description="Array of TC traffic filters." />
+ </setting>
+ <setting name="team" >
+ <property name="config"
+ alias="config"
+ description="The JSON configuration for the team network interface. The property should contain raw JSON configuration data suitable for teamd, because the value is passed directly to teamd. If not specified, the default configuration is used. See man teamd.conf for the format details." />
+ <property name="notify-peers-count"
+ description="Corresponds to the teamd notify_peers.count." />
+ <property name="notify-peers-interval"
+ description="Corresponds to the teamd notify_peers.interval." />
+ <property name="mcast-rejoin-count"
+ description="Corresponds to the teamd mcast_rejoin.count." />
+ <property name="mcast-rejoin-interval"
+ description="Corresponds to the teamd mcast_rejoin.interval." />
+ <property name="runner"
+ description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;, &quot;random&quot;." />
+ <property name="runner-hwaddr-policy"
+ description="Corresponds to the teamd runner.hwaddr_policy." />
+ <property name="runner-tx-hash"
+ description="Corresponds to the teamd runner.tx_hash." />
+ <property name="runner-tx-balancer"
+ description="Corresponds to the teamd runner.tx_balancer.name." />
+ <property name="runner-tx-balancer-interval"
+ description="Corresponds to the teamd runner.tx_balancer.interval." />
+ <property name="runner-active"
+ description="Corresponds to the teamd runner.active." />
+ <property name="runner-fast-rate"
+ description="Corresponds to the teamd runner.fast_rate." />
+ <property name="runner-sys-prio"
+ description="Corresponds to the teamd runner.sys_prio." />
+ <property name="runner-min-ports"
+ description="Corresponds to the teamd runner.min_ports." />
+ <property name="runner-agg-select-policy"
+ description="Corresponds to the teamd runner.agg_select_policy." />
+ <property name="link-watchers"
+ description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are &apos;ethtool&apos;, &apos;nsna_ping&apos; and &apos;arp_ping&apos; and it is specified in the dictionary with the key &apos;name&apos;. Available keys are: ethtool: &apos;delay-up&apos;, &apos;delay-down&apos;, &apos;init-wait&apos;; nsna_ping: &apos;init-wait&apos;, &apos;interval&apos;, &apos;missed-max&apos;, &apos;target-host&apos;; arp_ping: all the ones in nsna_ping and &apos;source-host&apos;, &apos;validate-active&apos;, &apos;validate-inactive&apos;, &apos;send-always&apos;. See teamd.conf man for more details." />
+ </setting>
+ <setting name="team-port" >
+ <property name="config"
+ alias="config"
+ description="The JSON configuration for the team port. The property should contain raw JSON configuration data suitable for teamd, because the value is passed directly to teamd. If not specified, the default configuration is used. See man teamd.conf for the format details." />
+ <property name="queue-id"
+ description="Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the parameter is skipped from the json config." />
+ <property name="prio"
+ description="Corresponds to the teamd ports.PORTIFNAME.prio." />
+ <property name="sticky"
+ description="Corresponds to the teamd ports.PORTIFNAME.sticky." />
+ <property name="lacp-prio"
+ description="Corresponds to the teamd ports.PORTIFNAME.lacp_prio." />
+ <property name="lacp-key"
+ description="Corresponds to the teamd ports.PORTIFNAME.lacp_key." />
+ <property name="link-watchers"
+ description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are &apos;ethtool&apos;, &apos;nsna_ping&apos; and &apos;arp_ping&apos; and it is specified in the dictionary with the key &apos;name&apos;. Available keys are: ethtool: &apos;delay-up&apos;, &apos;delay-down&apos;, &apos;init-wait&apos;; nsna_ping: &apos;init-wait&apos;, &apos;interval&apos;, &apos;missed-max&apos;, &apos;target-host&apos;; arp_ping: all the ones in nsna_ping and &apos;source-host&apos;, &apos;validate-active&apos;, &apos;validate-inactive&apos;, &apos;send-always&apos;. See teamd.conf man for more details." />
+ </setting>
+ <setting name="tun" >
+ <property name="mode"
+ alias="mode"
+ description="The operating mode of the virtual device. Allowed values are NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and NM_SETTING_TUN_MODE_TAP (2) to create an Ethernet-like layer 2 one." />
+ <property name="owner"
+ alias="owner"
+ description="The user ID which will own the device. If set to NULL everyone will be able to use the device." />
+ <property name="group"
+ alias="group"
+ description="The group ID which will own the device. If set to NULL everyone will be able to use the device." />
+ <property name="pi"
+ alias="pi"
+ description="If TRUE the interface will prepend a 4 byte header describing the physical interface to the packets." />
+ <property name="vnet-hdr"
+ alias="vnet-hdr"
+ description="If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network header." />
+ <property name="multi-queue"
+ alias="multi-queue"
+ description="If the property is set to TRUE, the interface will support multiple file descriptors (queues) to parallelize packet sending or receiving. Otherwise, the interface will only support a single queue." />
+ </setting>
+ <setting name="user" >
+ </setting>
+ <setting name="veth" >
+ <property name="peer"
+ alias="peer"
+ description="This property specifies the peer interface name of the veth. This property is mandatory." />
+ </setting>
+ <setting name="vlan" >
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID from which this VLAN interface should be created. If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
+ <property name="id"
+ alias="id"
+ description="The VLAN identifier that the interface created by this connection should be assigned. The valid range is from 0 to 4094, without the reserved id 4095." />
+ <property name="flags"
+ alias="flags"
+ description="One or more flags which control the behavior and features of the VLAN interface. Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of output packet headers), NM_VLAN_FLAG_GVRP (0x2) (use of the GVRP protocol), and NM_VLAN_FLAG_LOOSE_BINDING (0x4) (loose binding of the interface to its master device&apos;s operating state). NM_VLAN_FLAG_MVRP (0x8) (use of the MVRP protocol). The default value of this property is NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. To preserve backward compatibility, the default-value in the D-Bus API continues to be 0 and a missing property on D-Bus is still considered as 0." />
+ <property name="ingress-priority-map"
+ alias="ingress"
+ description="For incoming packets, a list of mappings from 802.1p priorities to Linux SKB priorities. The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
+ <property name="egress-priority-map"
+ alias="egress"
+ description="For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p priorities. The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
+ </setting>
+ <setting name="vpn" >
+ <property name="service-type"
+ alias="vpn-type"
+ description="D-Bus service name of the VPN plugin that this setting uses to connect to its network. i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin." />
+ <property name="user-name"
+ alias="user"
+ description="If the VPN connection requires a user name for authentication, that name should be provided here. If the connection is available to more than one user, and the VPN requires each user to supply a different name, then leave this property empty. If this property is empty, NetworkManager will automatically supply the username of the user which requested the VPN connection." />
+ <property name="data"
+ description="Dictionary of key/value pairs of VPN plugin specific data. Both keys and values must be strings." />
+ <property name="secrets"
+ description="Dictionary of key/value pairs of VPN plugin specific secrets like passwords or private keys. Both keys and values must be strings." />
+ <property name="persistent"
+ description="If the VPN service supports persistence, and this property is TRUE, the VPN will attempt to stay connected across link changes and outages, until explicitly disconnected." />
+ <property name="timeout"
+ description="Timeout for the VPN service to establish the connection. Some services may take quite a long time to connect. Value of 0 means a default timeout, which is 60 seconds (unless overridden by vpn.timeout in configuration file). Values greater than zero mean timeout in seconds." />
+ </setting>
+ <setting name="vrf" >
+ <property name="table"
+ alias="table"
+ description="The routing table for this VRF." />
+ </setting>
+ <setting name="vxlan" >
+ <property name="parent"
+ alias="dev"
+ description="If given, specifies the parent interface name or parent connection UUID." />
+ <property name="id"
+ alias="id"
+ description="Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use." />
+ <property name="local"
+ alias="local"
+ description="If given, specifies the source IP address to use in outgoing packets." />
+ <property name="remote"
+ alias="remote"
+ description="Specifies the unicast destination IP address to use in outgoing packets when the destination link layer address is not known in the VXLAN device forwarding database, or the multicast IP address to join." />
+ <property name="source-port-min"
+ alias="source-port-min"
+ description="Specifies the minimum UDP source port to communicate to the remote VXLAN tunnel endpoint." />
+ <property name="source-port-max"
+ alias="source-port-max"
+ description="Specifies the maximum UDP source port to communicate to the remote VXLAN tunnel endpoint." />
+ <property name="destination-port"
+ alias="destination-port"
+ description="Specifies the UDP destination port to communicate to the remote VXLAN tunnel endpoint." />
+ <property name="tos"
+ description="Specifies the TOS value to use in outgoing packets." />
+ <property name="ttl"
+ description="Specifies the time-to-live value to use in outgoing packets." />
+ <property name="ageing"
+ description="Specifies the lifetime in seconds of FDB entries learnt by the kernel." />
+ <property name="limit"
+ description="Specifies the maximum number of FDB entries. A value of zero means that the kernel will store unlimited entries." />
+ <property name="learning"
+ description="Specifies whether unknown source link layer addresses and IP addresses are entered into the VXLAN device forwarding database." />
+ <property name="proxy"
+ description="Specifies whether ARP proxy is turned on." />
+ <property name="rsc"
+ description="Specifies whether route short circuit is turned on." />
+ <property name="l2-miss"
+ description="Specifies whether netlink LL ADDR miss notifications are generated." />
+ <property name="l3-miss"
+ description="Specifies whether netlink IP ADDR miss notifications are generated." />
+ </setting>
+ <setting name="wifi-p2p" >
+ <property name="peer"
+ alias="peer"
+ description="The P2P device that should be connected to. Currently, this is the only way to create or join a group." />
+ <property name="wps-method"
+ description="Flags indicating which mode of WPS is to be used. There&apos;s little point in changing the default setting as NetworkManager will automatically determine the best method to use." />
+ <property name="wfd-ies"
+ description="The Wi-Fi Display (WFD) Information Elements (IEs) to set. Wi-Fi Display requires a protocol specific information element to be set in certain Wi-Fi frames. These can be specified here for the purpose of establishing a connection. This setting is only useful when implementing a Wi-Fi Display client." />
+ </setting>
+ <setting name="wimax" >
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, this connection will only apply to the WiMAX device whose MAC address matches. This property does not change the MAC address of the device (known as MAC spoofing). Deprecated: 1" />
+ <property name="network-name"
+ alias="nsp"
+ description="Network Service Provider (NSP) name of the WiMAX network this connection should use. Deprecated: 1" />
+ </setting>
+ <setting name="wireguard" >
+ <property name="private-key"
+ description="The 256 bit private-key in base64 encoding." />
+ <property name="private-key-flags"
+ description="Flags indicating how to handle the &quot;private-key&quot; property." />
+ <property name="listen-port"
+ description="The listen-port. If listen-port is not specified, the port will be chosen randomly when the interface comes up." />
+ <property name="fwmark"
+ description="The use of fwmark is optional and is by default off. Setting it to 0 disables it. Otherwise, it is a 32-bit fwmark for outgoing packets. Note that &quot;ip4-auto-default-route&quot; or &quot;ip6-auto-default-route&quot; enabled, implies to automatically choose a fwmark." />
+ <property name="peer-routes"
+ description="Whether to automatically add routes for the AllowedIPs ranges of the peers. If TRUE (the default), NetworkManager will automatically add routes in the routing tables according to ipv4.route-table and ipv6.route-table. Usually you want this automatism enabled. If FALSE, no such routes are added automatically. In this case, the user may want to configure static routes in ipv4.routes and ipv6.routes, respectively. Note that if the peer&apos;s AllowedIPs is &quot;0.0.0.0/0&quot; or &quot;::/0&quot; and the profile&apos;s ipv4.never-default or ipv6.never-default setting is enabled, the peer route for this peer won&apos;t be added automatically." />
+ <property name="mtu"
+ description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple fragments. If zero a default MTU is used. Note that contrary to wg-quick&apos;s MTU setting, this does not take into account the current routes at the time of activation." />
+ <property name="ip4-auto-default-route"
+ description="Whether to enable special handling of the IPv4 default route. If enabled, the IPv4 default route from wireguard.peer-routes will be placed to a dedicated routing-table and two policy routing rules will be added. The fwmark number is also used as routing-table for the default-route, and if fwmark is zero, an unused fwmark/table is chosen automatically. This corresponds to what wg-quick does with Table=auto and what WireGuard calls &quot;Improved Rule-based Routing&quot;. Note that for this automatism to work, you usually don&apos;t want to set ipv4.gateway, because that will result in a conflicting default route. Leaving this at the default will enable this option automatically if ipv4.never-default is not set and there are any peers that use a default-route as allowed-ips." />
+ <property name="ip6-auto-default-route"
+ description="Like ip4-auto-default-route, but for the IPv6 default route." />
+ </setting>
+ <setting name="wpan" >
+ <property name="mac-address"
+ alias="mac"
+ description="If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) MAC layer device whose permanent MAC address matches." />
+ <property name="short-address"
+ alias="short-addr"
+ description="Short IEEE 802.15.4 address to be used within a restricted environment." />
+ <property name="pan-id"
+ alias="pan-id"
+ description="IEEE 802.15.4 Personal Area Network (PAN) identifier." />
+ <property name="page"
+ alias="page"
+ description="IEEE 802.15.4 channel page. A positive integer or -1, meaning &quot;do not set, use whatever the device is already set to&quot;." />
+ <property name="channel"
+ alias="channel"
+ description="IEEE 802.15.4 channel. A positive integer or -1, meaning &quot;do not set, use whatever the device is already set to&quot;." />
+ </setting>
+</nm-setting-docs>
diff --git a/clients/cli/meson.build b/clients/cli/meson.build
index 517deffa69..585a5a7382 100644
--- a/clients/cli/meson.build
+++ b/clients/cli/meson.build
@@ -50,9 +50,23 @@ generate_docs_nm_settings_nmcli = executable(
link_depends: linker_script_binary,
)
-generate_docs_nm_settings_nmcli_xml = custom_target(
- 'generate-docs-nm-settings-nmcli.xml',
- output: 'generate-docs-nm-settings-nmcli.xml',
- command: [ generate_docs_nm_settings_nmcli ],
- capture: true,
-)
+if enable_docs
+ generate_docs_nm_settings_nmcli_xml = custom_target(
+ 'generate-docs-nm-settings-nmcli.xml',
+ output: 'generate-docs-nm-settings-nmcli.xml',
+ command: [ generate_docs_nm_settings_nmcli ],
+ capture: true,
+ )
+
+ test(
+ 'check-local-generate-docs-nm-settings-nmcli',
+ find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')),
+ args: [source_root, build_root, 'clients/cli/generate-docs-nm-settings-nmcli.xml'],
+ )
+else
+ settings_docs_source = configure_file(
+ input: 'generate-docs-nm-settings-nmcli.xml.in',
+ output: '@BASENAME@',
+ configuration: configuration_data(),
+ )
+endif
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c
index 447954089a..9d6ada068c 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -33,26 +33,48 @@
#define NMCLI_VERSION VERSION
#endif
-#define DEFAULT_PALETTE_INIT \
- [NM_META_COLOR_CONNECTION_ACTIVATED] = "32", [NM_META_COLOR_CONNECTION_ACTIVATING] = "33", \
- [NM_META_COLOR_CONNECTION_DISCONNECTING] = "31", [NM_META_COLOR_CONNECTION_INVISIBLE] = "2", \
- [NM_META_COLOR_CONNECTION_EXTERNAL] = "32;2", [NM_META_COLOR_CONNECTIVITY_FULL] = "32", \
- [NM_META_COLOR_CONNECTIVITY_LIMITED] = "33", [NM_META_COLOR_CONNECTIVITY_NONE] = "31", \
- [NM_META_COLOR_CONNECTIVITY_PORTAL] = "33", [NM_META_COLOR_DEVICE_ACTIVATED] = "32", \
- [NM_META_COLOR_DEVICE_ACTIVATING] = "33", [NM_META_COLOR_DEVICE_DISCONNECTED] = "31", \
- [NM_META_COLOR_DEVICE_FIRMWARE_MISSING] = "31", [NM_META_COLOR_DEVICE_PLUGIN_MISSING] = "31", \
- [NM_META_COLOR_DEVICE_UNAVAILABLE] = "2", [NM_META_COLOR_DEVICE_DISABLED] = "31", \
- [NM_META_COLOR_DEVICE_EXTERNAL] = "32;2", [NM_META_COLOR_MANAGER_RUNNING] = "32", \
- [NM_META_COLOR_MANAGER_STARTING] = "33", [NM_META_COLOR_MANAGER_STOPPED] = "31", \
- [NM_META_COLOR_PERMISSION_AUTH] = "33", [NM_META_COLOR_PERMISSION_NO] = "31", \
- [NM_META_COLOR_PERMISSION_YES] = "32", [NM_META_COLOR_STATE_ASLEEP] = "31", \
- [NM_META_COLOR_STATE_CONNECTED_GLOBAL] = "32", [NM_META_COLOR_STATE_CONNECTED_LOCAL] = "32", \
- [NM_META_COLOR_STATE_CONNECTED_SITE] = "32", [NM_META_COLOR_STATE_CONNECTING] = "33", \
- [NM_META_COLOR_STATE_DISCONNECTED] = "31", [NM_META_COLOR_STATE_DISCONNECTING] = "33", \
- [NM_META_COLOR_WIFI_SIGNAL_EXCELLENT] = "32", [NM_META_COLOR_WIFI_SIGNAL_FAIR] = "35", \
- [NM_META_COLOR_WIFI_SIGNAL_GOOD] = "33", [NM_META_COLOR_WIFI_SIGNAL_POOR] = "36", \
- [NM_META_COLOR_WIFI_SIGNAL_UNKNOWN] = "2", [NM_META_COLOR_ENABLED] = "32", \
- [NM_META_COLOR_DISABLED] = "31",
+#define _NMC_COLOR_PALETTE_INIT() \
+ { \
+ .ansi_seq = { \
+ [NM_META_COLOR_CONNECTION_ACTIVATED] = "32", \
+ [NM_META_COLOR_CONNECTION_ACTIVATING] = "33", \
+ [NM_META_COLOR_CONNECTION_DISCONNECTING] = "31", \
+ [NM_META_COLOR_CONNECTION_INVISIBLE] = "2", \
+ [NM_META_COLOR_CONNECTION_EXTERNAL] = "32;2", \
+ [NM_META_COLOR_CONNECTIVITY_FULL] = "32", \
+ [NM_META_COLOR_CONNECTIVITY_LIMITED] = "33", \
+ [NM_META_COLOR_CONNECTIVITY_NONE] = "31", \
+ [NM_META_COLOR_CONNECTIVITY_PORTAL] = "33", \
+ [NM_META_COLOR_DEVICE_ACTIVATED] = "32", \
+ [NM_META_COLOR_DEVICE_ACTIVATING] = "33", \
+ [NM_META_COLOR_DEVICE_DISCONNECTED] = "31", \
+ [NM_META_COLOR_DEVICE_FIRMWARE_MISSING] = "31", \
+ [NM_META_COLOR_DEVICE_PLUGIN_MISSING] = "31", \
+ [NM_META_COLOR_DEVICE_UNAVAILABLE] = "2", \
+ [NM_META_COLOR_DEVICE_DISABLED] = "31", \
+ [NM_META_COLOR_DEVICE_EXTERNAL] = "32;2", \
+ [NM_META_COLOR_MANAGER_RUNNING] = "32", \
+ [NM_META_COLOR_MANAGER_STARTING] = "33", \
+ [NM_META_COLOR_MANAGER_STOPPED] = "31", \
+ [NM_META_COLOR_PERMISSION_AUTH] = "33", \
+ [NM_META_COLOR_PERMISSION_NO] = "31", \
+ [NM_META_COLOR_PERMISSION_YES] = "32", \
+ [NM_META_COLOR_STATE_ASLEEP] = "31", \
+ [NM_META_COLOR_STATE_CONNECTED_GLOBAL] = "32", \
+ [NM_META_COLOR_STATE_CONNECTED_LOCAL] = "32", \
+ [NM_META_COLOR_STATE_CONNECTED_SITE] = "32", \
+ [NM_META_COLOR_STATE_CONNECTING] = "33", \
+ [NM_META_COLOR_STATE_DISCONNECTED] = "31", \
+ [NM_META_COLOR_STATE_DISCONNECTING] = "33", \
+ [NM_META_COLOR_WIFI_SIGNAL_EXCELLENT] = "32", \
+ [NM_META_COLOR_WIFI_SIGNAL_FAIR] = "35", \
+ [NM_META_COLOR_WIFI_SIGNAL_GOOD] = "33", \
+ [NM_META_COLOR_WIFI_SIGNAL_POOR] = "36", \
+ [NM_META_COLOR_WIFI_SIGNAL_UNKNOWN] = "2", \
+ [NM_META_COLOR_ENABLED] = "32", \
+ [NM_META_COLOR_DISABLED] = "31", \
+ }, \
+ }
static NmCli nm_cli = {
.client = NULL,
@@ -76,7 +98,7 @@ static NmCli nm_cli = {
.complete = FALSE,
.nmc_config.show_secrets = FALSE,
.nmc_config.in_editor = FALSE,
- .nmc_config.palette = {DEFAULT_PALETTE_INIT},
+ .nmc_config.palette = _NMC_COLOR_PALETTE_INIT(),
.editor_status_line = FALSE,
.editor_save_confirmation = TRUE,
};
@@ -486,97 +508,101 @@ check_colors(NmcColorOption color_option, char **out_palette_str)
return TRUE;
}
-static const char *
-resolve_color_alias(const char *color)
-{
- static const struct {
- const char *name;
- const char *alias;
- } aliases[] = {
- {"reset", "0"}, {"bold", "1"}, {"white", "1;37"},
- {"halfbright", "2"}, {"underscore", "4"}, {"blink", "5"},
- {"reverse", "7"}, {"black", "30"}, {"red", "31"},
- {"green", "32"}, {"brown", "33"}, {"yellow", "33"}, /* well, yellow */
- {"blue", "34"}, {"magenta", "35"}, {"cyan", "36"},
- {"gray", "37"}, {"darkgray", "90"}, {"lightred", "91"},
- {"lightgreen", "92"}, {"lightblue", "94"}, {"lightmagenta", "95"},
- {"lightcyan", "96"}, {"lightgray", "97"},
- };
- int i;
-
- /* Shortcut literal sequences. */
- if (g_ascii_isdigit(*color))
- return color;
-
- for (i = 0; i < G_N_ELEMENTS(aliases); i++) {
- if (strcmp(color, aliases[i].name) == 0)
- return aliases[i].alias;
- }
-
- return color;
-}
+static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
+ _resolve_color_alias,
+ const char *,
+ { nm_assert(name); },
+ { return NULL; },
+ {"black", "30"},
+ {"blink", "5"},
+ {"blue", "34"},
+ {"bold", "1"},
+ {"brown", "33"},
+ {"cyan", "36"},
+ {"darkgray", "90"},
+ {"gray", "37"},
+ {"green", "32"},
+ {"halfbright", "2"},
+ {"lightblue", "94"},
+ {"lightcyan", "96"},
+ {"lightgray", "97"},
+ {"lightgreen", "92"},
+ {"lightmagenta", "95"},
+ {"lightred", "91"},
+ {"magenta", "35"},
+ {"red", "31"},
+ {"reset", "0"},
+ {"reverse", "7"},
+ {"underscore", "4"},
+ {"white", "1;37"},
+ {"yellow", "33" /* well, yellow */}, );
+
+static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
+ _nm_meta_color_from_name,
+ NMMetaColor,
+ { nm_assert(name); },
+ { return NM_META_COLOR_NONE; },
+ {"connection-activated", NM_META_COLOR_CONNECTION_ACTIVATED},
+ {"connection-activating", NM_META_COLOR_CONNECTION_ACTIVATING},
+ {"connection-disconnecting", NM_META_COLOR_CONNECTION_DISCONNECTING},
+ {"connection-external", NM_META_COLOR_CONNECTION_EXTERNAL},
+ {"connection-invisible", NM_META_COLOR_CONNECTION_INVISIBLE},
+ {"connection-unknown", NM_META_COLOR_CONNECTION_UNKNOWN},
+ {"connectivity-full", NM_META_COLOR_CONNECTIVITY_FULL},
+ {"connectivity-limited", NM_META_COLOR_CONNECTIVITY_LIMITED},
+ {"connectivity-none", NM_META_COLOR_CONNECTIVITY_NONE},
+ {"connectivity-portal", NM_META_COLOR_CONNECTIVITY_PORTAL},
+ {"connectivity-unknown", NM_META_COLOR_CONNECTIVITY_UNKNOWN},
+ {"device-activated", NM_META_COLOR_DEVICE_ACTIVATED},
+ {"device-activating", NM_META_COLOR_DEVICE_ACTIVATING},
+ {"device-disabled", NM_META_COLOR_DEVICE_DISABLED},
+ {"device-disconnected", NM_META_COLOR_DEVICE_DISCONNECTED},
+ {"device-external", NM_META_COLOR_DEVICE_EXTERNAL},
+ {"device-firmware-missing", NM_META_COLOR_DEVICE_FIRMWARE_MISSING},
+ {"device-plugin-missing", NM_META_COLOR_DEVICE_PLUGIN_MISSING},
+ {"device-unavailable", NM_META_COLOR_DEVICE_UNAVAILABLE},
+ {"device-unknown", NM_META_COLOR_DEVICE_UNKNOWN},
+ {"disabled", NM_META_COLOR_DISABLED},
+ {"enabled", NM_META_COLOR_ENABLED},
+ {"manager-running", NM_META_COLOR_MANAGER_RUNNING},
+ {"manager-starting", NM_META_COLOR_MANAGER_STARTING},
+ {"manager-stopped", NM_META_COLOR_MANAGER_STOPPED},
+ {"permission-auth", NM_META_COLOR_PERMISSION_AUTH},
+ {"permission-no", NM_META_COLOR_PERMISSION_NO},
+ {"permission-unknown", NM_META_COLOR_PERMISSION_UNKNOWN},
+ {"permission-yes", NM_META_COLOR_PERMISSION_YES},
+ {"prompt", NM_META_COLOR_PROMPT},
+ {"state-asleep", NM_META_COLOR_STATE_ASLEEP},
+ {"state-connected-global", NM_META_COLOR_STATE_CONNECTED_GLOBAL},
+ {"state-connected-local", NM_META_COLOR_STATE_CONNECTED_LOCAL},
+ {"state-connected-site", NM_META_COLOR_STATE_CONNECTED_SITE},
+ {"state-connecting", NM_META_COLOR_STATE_CONNECTING},
+ {"state-disconnected", NM_META_COLOR_STATE_DISCONNECTED},
+ {"state-disconnecting", NM_META_COLOR_STATE_DISCONNECTING},
+ {"state-unknown", NM_META_COLOR_STATE_UNKNOWN},
+ {"wifi-signal-excellent", NM_META_COLOR_WIFI_SIGNAL_EXCELLENT},
+ {"wifi-signal-fair", NM_META_COLOR_WIFI_SIGNAL_FAIR},
+ {"wifi-signal-good", NM_META_COLOR_WIFI_SIGNAL_GOOD},
+ {"wifi-signal-poor", NM_META_COLOR_WIFI_SIGNAL_POOR},
+ {"wifi-signal-unknown", NM_META_COLOR_WIFI_SIGNAL_UNKNOWN}, );
static gboolean
-parse_color_scheme(char * palette_buffer,
- const char **palette /* _NM_META_COLOR_NUM elements */,
- GError ** error)
+parse_color_scheme(char *palette_buffer, NmcColorPalette *out_palette, GError **error)
{
- char * p = palette_buffer;
- const char * name;
- const char * color;
- const char * tmp_palette[_NM_META_COLOR_NUM] = {DEFAULT_PALETTE_INIT};
- static const char *const map[_NM_META_COLOR_NUM] = {
- [NM_META_COLOR_NONE] = NULL,
- [NM_META_COLOR_CONNECTION_ACTIVATED] = "connection-activated",
- [NM_META_COLOR_CONNECTION_ACTIVATING] = "connection-activating",
- [NM_META_COLOR_CONNECTION_DISCONNECTING] = "connection-disconnecting",
- [NM_META_COLOR_CONNECTION_INVISIBLE] = "connection-invisible",
- [NM_META_COLOR_CONNECTION_EXTERNAL] = "connection-external",
- [NM_META_COLOR_CONNECTION_UNKNOWN] = "connection-unknown",
- [NM_META_COLOR_CONNECTIVITY_FULL] = "connectivity-full",
- [NM_META_COLOR_CONNECTIVITY_LIMITED] = "connectivity-limited",
- [NM_META_COLOR_CONNECTIVITY_NONE] = "connectivity-none",
- [NM_META_COLOR_CONNECTIVITY_PORTAL] = "connectivity-portal",
- [NM_META_COLOR_CONNECTIVITY_UNKNOWN] = "connectivity-unknown",
- [NM_META_COLOR_DEVICE_ACTIVATED] = "device-activated",
- [NM_META_COLOR_DEVICE_ACTIVATING] = "device-activating",
- [NM_META_COLOR_DEVICE_DISCONNECTED] = "device-disconnected",
- [NM_META_COLOR_DEVICE_FIRMWARE_MISSING] = "device-firmware-missing",
- [NM_META_COLOR_DEVICE_PLUGIN_MISSING] = "device-plugin-missing",
- [NM_META_COLOR_DEVICE_UNAVAILABLE] = "device-unavailable",
- [NM_META_COLOR_DEVICE_DISABLED] = "device-disabled",
- [NM_META_COLOR_DEVICE_EXTERNAL] = "device-external",
- [NM_META_COLOR_DEVICE_UNKNOWN] = "device-unknown",
- [NM_META_COLOR_MANAGER_RUNNING] = "manager-running",
- [NM_META_COLOR_MANAGER_STARTING] = "manager-starting",
- [NM_META_COLOR_MANAGER_STOPPED] = "manager-stopped",
- [NM_META_COLOR_PERMISSION_AUTH] = "permission-auth",
- [NM_META_COLOR_PERMISSION_NO] = "permission-no",
- [NM_META_COLOR_PERMISSION_UNKNOWN] = "permission-unknown",
- [NM_META_COLOR_PERMISSION_YES] = "permission-yes",
- [NM_META_COLOR_PROMPT] = "prompt",
- [NM_META_COLOR_STATE_ASLEEP] = "state-asleep",
- [NM_META_COLOR_STATE_CONNECTED_GLOBAL] = "state-connected-global",
- [NM_META_COLOR_STATE_CONNECTED_LOCAL] = "state-connected-local",
- [NM_META_COLOR_STATE_CONNECTED_SITE] = "state-connected-site",
- [NM_META_COLOR_STATE_CONNECTING] = "state-connecting",
- [NM_META_COLOR_STATE_DISCONNECTED] = "state-disconnected",
- [NM_META_COLOR_STATE_DISCONNECTING] = "state-disconnecting",
- [NM_META_COLOR_STATE_UNKNOWN] = "state-unknown",
- [NM_META_COLOR_WIFI_SIGNAL_EXCELLENT] = "wifi-signal-excellent",
- [NM_META_COLOR_WIFI_SIGNAL_FAIR] = "wifi-signal-fair",
- [NM_META_COLOR_WIFI_SIGNAL_GOOD] = "wifi-signal-good",
- [NM_META_COLOR_WIFI_SIGNAL_POOR] = "wifi-signal-poor",
- [NM_META_COLOR_WIFI_SIGNAL_UNKNOWN] = "wifi-signal-unknown",
- [NM_META_COLOR_DISABLED] = "disabled",
- [NM_META_COLOR_ENABLED] = "enabled",
- };
- int i;
+ char *p = palette_buffer;
+
+ nm_assert(out_palette);
+
+ *out_palette = (NmcColorPalette) _NMC_COLOR_PALETTE_INIT();
/* This reads through the raw color scheme file contents, identifying the
* color names and sequences, putting in terminating NULs in place, so that
* pointers into the buffer can readily be used as strings in the palette. */
while (1) {
+ NMMetaColor name_idx;
+ const char *name;
+ const char *color;
+
/* Leading whitespace. */
while (nm_utils_is_separator(*p) || *p == '\n')
p++;
@@ -638,42 +664,51 @@ parse_color_scheme(char * palette_buffer,
p++;
}
- /* All good, set the palette entry. */
- for (i = NM_META_COLOR_NONE + 1; i < _NM_META_COLOR_NUM; i++) {
- if (strcmp(map[i], name) == 0) {
- tmp_palette[i] = resolve_color_alias(color);
- break;
- }
- }
- if (i == _NM_META_COLOR_NUM)
+ name_idx = _nm_meta_color_from_name(name);
+ if (name_idx == NM_META_COLOR_NONE) {
g_debug("Ignoring an unrecognized color: '%s'\n", name);
+ continue;
+ }
+
+ out_palette->ansi_seq[name_idx] = _resolve_color_alias(color) ?: color;
}
- memcpy(palette, tmp_palette, sizeof(tmp_palette));
return TRUE;
}
static void
-set_colors(NmcColorOption color_option,
- bool * out_use_colors,
- char ** out_palette_buffer,
- const char ** palette /* _NM_META_COLOR_NUM elements */)
+set_colors(NmcColorOption color_option,
+ bool * out_use_colors,
+ char ** out_palette_buffer,
+ NmcColorPalette *out_palette)
{
gs_free char *palette_str = NULL;
gboolean use_colors;
+ gboolean palette_set = FALSE;
+
+ nm_assert(out_use_colors);
+ nm_assert(out_palette);
+ nm_assert(out_palette_buffer && !*out_palette_buffer);
use_colors = check_colors(color_option, &palette_str);
*out_use_colors = use_colors;
+
if (use_colors && palette_str) {
- GError *error = NULL;
+ gs_free_error GError *error = NULL;
+ NmcColorPalette palette;
- if (!parse_color_scheme(palette_str, palette, &error)) {
+ if (!parse_color_scheme(palette_str, &palette, &error))
g_debug("Error parsing color scheme: %s", error->message);
- g_error_free(error);
- } else
+ else {
*out_palette_buffer = g_steal_pointer(&palette_str);
+ *out_palette = palette;
+ palette_set = TRUE;
+ }
}
+
+ if (!palette_set)
+ *out_palette = (NmcColorPalette) _NMC_COLOR_PALETTE_INIT();
}
/*************************************************************************************/
@@ -872,7 +907,7 @@ process_command_line(NmCli *nmc, int argc, char **argv_orig)
set_colors(colors,
&nmc->nmc_config_mutable.use_colors,
&nmc->palette_buffer,
- nmc->nmc_config_mutable.palette);
+ &nmc->nmc_config_mutable.palette);
/* Now run the requested command */
nmc_do_cmd(nmc, nmcli_cmds, *argv, argc, argv);
diff --git a/clients/cli/nmcli.h b/clients/cli/nmcli.h
index 1cd2e2a757..e1c70b841c 100644
--- a/clients/cli/nmcli.h
+++ b/clients/cli/nmcli.h
@@ -73,6 +73,10 @@ typedef enum {
NMC_OF_FLAG_MAIN_HEADER_ONLY = 0x00000008, /* Print main header only */
} NmcOfFlags;
+typedef struct {
+ const char *ansi_seq[_NM_META_COLOR_NUM];
+} NmcColorPalette;
+
extern const NMMetaType nmc_meta_type_generic_info;
typedef struct _NmcOutputField NmcOutputField;
@@ -96,8 +100,8 @@ typedef struct _NmcConfig {
bool in_editor; /* Whether running the editor - nmcli con edit' */
bool
show_secrets; /* Whether to display secrets (both input and output): option '--show-secrets' */
- bool overview; /* Overview mode (hide default values) */
- const char *palette[_NM_META_COLOR_NUM]; /* Color palette */
+ bool overview; /* Overview mode (hide default values) */
+ NmcColorPalette palette;
} NmcConfig;
typedef struct {
diff --git a/clients/cli/utils.c b/clients/cli/utils.c
index 2e7b22ce6f..72ba9c6d86 100644
--- a/clients/cli/utils.c
+++ b/clients/cli/utils.c
@@ -374,23 +374,21 @@ nmc_terminal_show_progress(const char *str)
char *
nmc_colorize(const NmcConfig *nmc_config, NMMetaColor color, const char *fmt, ...)
{
- va_list args;
- char * str, *colored;
- const char *ansi_seq = NULL;
+ va_list args;
+ gs_free char *str = NULL;
+ const char * ansi_seq = NULL;
va_start(args, fmt);
str = g_strdup_vprintf(fmt, args);
va_end(args);
if (nmc_config->use_colors)
- ansi_seq = nmc_config->palette[color];
+ ansi_seq = nmc_config->palette.ansi_seq[color];
- if (ansi_seq == NULL)
- return str;
+ if (!ansi_seq)
+ return g_steal_pointer(&str);
- colored = g_strdup_printf("\33[%sm%s\33[0m", ansi_seq, str);
- g_free(str);
- return colored;
+ return g_strdup_printf("\33[%sm%s\33[0m", ansi_seq, str);
}
/*
diff --git a/clients/common/meson.build b/clients/common/meson.build
index cefcfce02d..0e3f0d4f6f 100644
--- a/clients/common/meson.build
+++ b/clients/common/meson.build
@@ -31,7 +31,7 @@ libnmc_base_dep = declare_dependency(
settings_docs = 'settings-docs.h'
-if enable_introspection
+if enable_docs
settings_docs_source = custom_target(
settings_docs,
input: nm_settings_docs_xml_gir,
@@ -41,7 +41,7 @@ if enable_introspection
test(
'check-settings-docs',
- find_program(join_paths(source_root, 'tools', 'check-settings-docs.sh')),
+ find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')),
args: [source_root, build_root, 'clients/common/' + settings_docs],
)
else
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c
index cdb3084a07..e4b74751cb 100644
--- a/clients/common/nm-meta-setting-desc.c
+++ b/clients/common/nm-meta-setting-desc.c
@@ -2400,13 +2400,9 @@ _nm_meta_setting_bond_add_option(NMSetting * setting,
char * p;
if (!value || !value[0]) {
- if (!nm_setting_bond_remove_option(s_bond, name)) {
- nm_utils_error_set(error,
- NM_UTILS_ERROR_INVALID_ARGUMENT,
- _("failed to unset bond option \"%s\""),
- name);
- return FALSE;
- }
+ /* This call only fails if name is currently not tracked. It's not an
+ * error to remove an option that is not set. */
+ nm_setting_bond_remove_option(s_bond, name);
return TRUE;
}
@@ -2421,7 +2417,7 @@ _nm_meta_setting_bond_add_option(NMSetting * setting,
*p = ',';
}
- if (!nm_setting_bond_add_option(s_bond, name, value)) {
+ if (!nm_setting_bond_validate_option(name, value)) {
nm_utils_error_set(error,
NM_UTILS_ERROR_INVALID_ARGUMENT,
_("failed to set bond option \"%s\""),
@@ -2429,6 +2425,8 @@ _nm_meta_setting_bond_add_option(NMSetting * setting,
return FALSE;
}
+ nm_setting_bond_add_option(s_bond, name, value);
+
if (nm_streq(name, NM_SETTING_BOND_OPTION_ARP_INTERVAL)) {
if (_nm_utils_ascii_str_to_int64(value, 10, 0, G_MAXINT, 0) > 0)
_nm_setting_bond_remove_options_miimon(s_bond);
@@ -2563,10 +2561,15 @@ static const char *const *_complete_fcn_connection_type(ARGS_COMPLETE_FCN)
for (i = 0, j = 0; i < _NM_META_SETTING_TYPE_NUM; i++) {
const NMMetaSettingInfoEditor *setting_info = &nm_meta_setting_infos_editor[i];
+ GType gtype = setting_info->general->get_setting_gtype();
const char * v;
- if (!setting_info->valid_parts)
+ if (_nm_setting_type_get_base_type_priority(gtype) == NM_SETTING_PRIORITY_INVALID) {
+ nm_assert(!setting_info->valid_parts);
continue;
+ }
+
+ nm_assert(setting_info->valid_parts);
v = setting_info->alias;
if (v) {
@@ -5636,6 +5639,24 @@ static const NMMetaPropertyInfo *const property_infos_GSM[] = {
};
#undef _CURRENT_NM_META_SETTING_TYPE
+#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_HOSTNAME
+static const NMMetaPropertyInfo *const property_infos_HOSTNAME[] = {
+ PROPERTY_INFO (NM_SETTING_HOSTNAME_PRIORITY, DESCRIBE_DOC_NM_SETTING_HOSTNAME_PRIORITY,
+ .property_type = &_pt_gobject_int,
+ ),
+ PROPERTY_INFO (NM_SETTING_HOSTNAME_FROM_DHCP, DESCRIBE_DOC_NM_SETTING_HOSTNAME_FROM_DHCP,
+ .property_type = &_pt_gobject_enum,
+ ),
+ PROPERTY_INFO (NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP, DESCRIBE_DOC_NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
+ .property_type = &_pt_gobject_enum,
+ ),
+ PROPERTY_INFO (NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT, DESCRIBE_DOC_NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT,
+ .property_type = &_pt_gobject_enum,
+ ),
+ NULL
+};
+
+#undef _CURRENT_NM_META_SETTING_TYPE
#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_INFINIBAND
static const NMMetaPropertyInfo *const property_infos_INFINIBAND[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MAC_ADDRESS,
@@ -7064,6 +7085,19 @@ static const NMMetaPropertyInfo *const property_infos_TUN[] = {
};
#undef _CURRENT_NM_META_SETTING_TYPE
+#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VETH
+static const NMMetaPropertyInfo *const property_infos_VETH[] = {
+ PROPERTY_INFO_WITH_DESC (NM_SETTING_VETH_PEER,
+ .is_cli_option = TRUE,
+ .property_alias = "peer",
+ .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD,
+ .prompt = N_("veth peer"),
+ .property_type = &_pt_gobject_string,
+ ),
+ NULL
+};
+
+#undef _CURRENT_NM_META_SETTING_TYPE
#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VLAN
static const NMMetaPropertyInfo *const property_infos_VLAN[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_PARENT,
@@ -7202,7 +7236,6 @@ static const NMMetaPropertyInfo *const property_infos_VXLAN[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_REMOTE,
.is_cli_option = TRUE,
.property_alias = "remote",
- .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD,
.prompt = N_("Remote"),
.property_type = &_pt_gobject_string,
),
@@ -7939,6 +7972,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
#define SETTING_PRETTY_NAME_ETHTOOL N_("Ethtool settings")
#define SETTING_PRETTY_NAME_GENERIC N_("Generic settings")
#define SETTING_PRETTY_NAME_GSM N_("GSM mobile broadband connection")
+#define SETTING_PRETTY_NAME_HOSTNAME N_("Hostname settings")
#define SETTING_PRETTY_NAME_INFINIBAND N_("InfiniBand connection")
#define SETTING_PRETTY_NAME_IP4_CONFIG N_("IPv4 protocol")
#define SETTING_PRETTY_NAME_IP6_CONFIG N_("IPv6 protocol")
@@ -7949,6 +7983,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
#define SETTING_PRETTY_NAME_OLPC_MESH N_("OLPC Mesh connection")
#define SETTING_PRETTY_NAME_OVS_BRIDGE N_("Open vSwitch bridge settings")
#define SETTING_PRETTY_NAME_OVS_DPDK N_("Open vSwitch DPDK interface settings")
+#define SETTING_PRETTY_NAME_OVS_EXTERNAL_IDS N_("OVS External IDs")
#define SETTING_PRETTY_NAME_OVS_INTERFACE N_("Open vSwitch interface settings")
#define SETTING_PRETTY_NAME_OVS_PATCH N_("Open vSwitch patch interface settings")
#define SETTING_PRETTY_NAME_OVS_PORT N_("Open vSwitch port settings")
@@ -7962,6 +7997,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
#define SETTING_PRETTY_NAME_TEAM_PORT N_("Team port")
#define SETTING_PRETTY_NAME_TUN N_("Tun device")
#define SETTING_PRETTY_NAME_USER N_("User settings")
+#define SETTING_PRETTY_NAME_VETH N_("Veth connection")
#define SETTING_PRETTY_NAME_VLAN N_("VLAN connection")
#define SETTING_PRETTY_NAME_VPN N_("VPN connection")
#define SETTING_PRETTY_NAME_VRF N_("VRF connection")
@@ -8075,6 +8111,7 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
),
.setting_init_fcn = _setting_init_fcn_gsm,
),
+ SETTING_INFO (HOSTNAME),
SETTING_INFO (INFINIBAND,
.valid_parts = NM_META_SETTING_VALID_PARTS (
NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
@@ -8131,7 +8168,13 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
NM_META_SETTING_VALID_PART_ITEM (WIRED, FALSE),
),
),
- SETTING_INFO (OVS_DPDK),
+ SETTING_INFO (OVS_DPDK,
+ .valid_parts = NM_META_SETTING_VALID_PARTS (
+ NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
+ NM_META_SETTING_VALID_PART_ITEM (OVS_DPDK, TRUE),
+ ),
+ ),
+ SETTING_INFO_EMPTY (OVS_EXTERNAL_IDS),
SETTING_INFO (OVS_INTERFACE,
.valid_parts = NM_META_SETTING_VALID_PARTS (
NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
@@ -8144,7 +8187,12 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
NM_META_SETTING_VALID_PART_ITEM (ETHTOOL, FALSE),
),
),
- SETTING_INFO (OVS_PATCH),
+ SETTING_INFO (OVS_PATCH,
+ .valid_parts = NM_META_SETTING_VALID_PARTS (
+ NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
+ NM_META_SETTING_VALID_PART_ITEM (OVS_PATCH, TRUE),
+ ),
+ ),
SETTING_INFO (OVS_PORT,
.valid_parts = NM_META_SETTING_VALID_PARTS (
NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
@@ -8190,6 +8238,14 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
.setting_init_fcn = _setting_init_fcn_tun,
),
SETTING_INFO_EMPTY (USER),
+ SETTING_INFO (VETH,
+ .valid_parts = NM_META_SETTING_VALID_PARTS (
+ NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
+ NM_META_SETTING_VALID_PART_ITEM (VETH, TRUE),
+ NM_META_SETTING_VALID_PART_ITEM (WIRED, FALSE),
+ NM_META_SETTING_VALID_PART_ITEM (ETHTOOL, FALSE),
+ ),
+ ),
SETTING_INFO (VLAN,
.valid_parts = NM_META_SETTING_VALID_PARTS (
NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
@@ -8285,6 +8341,7 @@ static const NMMetaSettingValidPartItem *const valid_settings_noslave[] = {
NM_META_SETTING_VALID_PART_ITEM(MATCH, FALSE),
NM_META_SETTING_VALID_PART_ITEM(IP4_CONFIG, FALSE),
NM_META_SETTING_VALID_PART_ITEM(IP6_CONFIG, FALSE),
+ NM_META_SETTING_VALID_PART_ITEM(HOSTNAME, FALSE),
NM_META_SETTING_VALID_PART_ITEM(TC_CONFIG, FALSE),
NM_META_SETTING_VALID_PART_ITEM(PROXY, FALSE),
NULL,
diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in
index 58fc92e135..9e42d99d6e 100644
--- a/clients/common/settings-docs.h.in
+++ b/clients/common/settings-docs.h.in
@@ -203,6 +203,10 @@
#define DESCRIBE_DOC_NM_SETTING_GSM_SIM_ID N_("The SIM card unique identifier (as given by the WWAN management service) which this connection applies to. If given, the connection will apply to any device also allowed by \"device-id\" which contains a SIM card matching the given identifier.")
#define DESCRIBE_DOC_NM_SETTING_GSM_SIM_OPERATOR_ID N_("A MCC/MNC string like \"310260\" or \"21601\" identifying the specific mobile network operator which this connection applies to. If given, the connection will apply to any device also allowed by \"device-id\" and \"sim-id\" which contains a SIM card provisioned by the given operator.")
#define DESCRIBE_DOC_NM_SETTING_GSM_USERNAME N_("The username used to authenticate with the network, if required. Many providers do not require a username, or accept any username. But if a username is required, it is specified here.")
+#define DESCRIBE_DOC_NM_SETTING_HOSTNAME_FROM_DHCP N_("Whether the system hostname can be determined from DHCP on this connection. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn't have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1).")
+#define DESCRIBE_DOC_NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP N_("Whether the system hostname can be determined from reverse DNS lookup of addresses on this device. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn't have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1).")
+#define DESCRIBE_DOC_NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT N_("If set to NM_TERNARY_TRUE (1), NetworkManager attempts to get the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device has the default route for the given address family (IPv4/IPv6). If set to NM_TERNARY_FALSE (0), the hostname can be set from this device even if it doesn't have the default route. When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is used. If the property doesn't have a value in the global configuration, NetworkManager assumes the value to be NM_TERNARY_TRUE (1).")
+#define DESCRIBE_DOC_NM_SETTING_HOSTNAME_PRIORITY N_("The relative priority of this connection to determine the system hostname. A lower numerical value is better (higher priority). A connection with higher priority is considered before connections with lower priority. If the value is zero, it can be overridden by a global value from NetworkManager configuration. If the property doesn't have a value in the global configuration, the value is assumed to be 100. Negative values have the special effect of excluding other connections with a greater numerical priority value; so in presence of at least one negative priority, only connections with the lowest priority value will be used to determine the hostname.")
#define DESCRIBE_DOC_NM_SETTING_INFINIBAND_MAC_ADDRESS N_("If specified, this connection will only apply to the IPoIB device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
#define DESCRIBE_DOC_NM_SETTING_INFINIBAND_MTU N_("If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames.")
#define DESCRIBE_DOC_NM_SETTING_INFINIBAND_P_KEY N_("The InfiniBand P_Key to use for this device. A value of -1 means to use the default P_Key (aka \"the P_Key at index 0\"). Otherwise, it is a 16-bit unsigned integer, whose high bit is set if it is a \"full membership\" P_Key.")
@@ -294,6 +298,7 @@
#define DESCRIBE_DOC_NM_SETTING_OVS_BRIDGE_RSTP_ENABLE N_("Enable or disable RSTP.")
#define DESCRIBE_DOC_NM_SETTING_OVS_BRIDGE_STP_ENABLE N_("Enable or disable STP.")
#define DESCRIBE_DOC_NM_SETTING_OVS_DPDK_DEVARGS N_("Open vSwitch DPDK device arguments.")
+#define DESCRIBE_DOC_NM_SETTING_OVS_EXTERNAL_IDS_DATA N_("A dictionary of key/value pairs with exernal-ids for OVS.")
#define DESCRIBE_DOC_NM_SETTING_OVS_INTERFACE_TYPE N_("The interface type. Either \"internal\", \"system\", \"patch\", \"dpdk\", or empty.")
#define DESCRIBE_DOC_NM_SETTING_OVS_PATCH_PEER N_("Specifies the name of the interface for the other side of the patch. The patch on the other side must also set this interface as peer.")
#define DESCRIBE_DOC_NM_SETTING_OVS_PORT_BOND_DOWNDELAY N_("The time port must be inactive in order to be considered down.")
@@ -369,6 +374,7 @@
#define DESCRIBE_DOC_NM_SETTING_TUN_PI N_("If TRUE the interface will prepend a 4 byte header describing the physical interface to the packets.")
#define DESCRIBE_DOC_NM_SETTING_TUN_VNET_HDR N_("If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network header.")
#define DESCRIBE_DOC_NM_SETTING_USER_DATA N_("A dictionary of key/value pairs with user data. This data is ignored by NetworkManager and can be used at the users discretion. The keys only support a strict ascii format, but the values can be arbitrary UTF8 strings up to a certain length.")
+#define DESCRIBE_DOC_NM_SETTING_VETH_PEER N_("This property specifies the peer interface name of the veth. This property is mandatory.")
#define DESCRIBE_DOC_NM_SETTING_VLAN_EGRESS_PRIORITY_MAP N_("For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p priorities. The mapping is given in the format \"from:to\" where both \"from\" and \"to\" are unsigned integers, ie \"7:3\".")
#define DESCRIBE_DOC_NM_SETTING_VLAN_FLAGS N_("One or more flags which control the behavior and features of the VLAN interface. Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of output packet headers), NM_VLAN_FLAG_GVRP (0x2) (use of the GVRP protocol), and NM_VLAN_FLAG_LOOSE_BINDING (0x4) (loose binding of the interface to its master device's operating state). NM_VLAN_FLAG_MVRP (0x8) (use of the MVRP protocol). The default value of this property is NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. To preserve backward compatibility, the default-value in the D-Bus API continues to be 0 and a missing property on D-Bus is still considered as 0.")
#define DESCRIBE_DOC_NM_SETTING_VLAN_ID N_("The VLAN identifier that the interface created by this connection should be assigned. The valid range is from 0 to 4094, without the reserved id 4095.")
diff --git a/clients/common/tests/test-clients-common.c b/clients/common/tests/test-clients-common.c
index 8a59d4e288..d4c53d24c3 100644
--- a/clients/common/tests/test-clients-common.c
+++ b/clients/common/tests/test-clients-common.c
@@ -53,6 +53,9 @@ test_client_meta_check(void)
for (m = 0; m < _NM_META_SETTING_TYPE_NUM; m++) {
const NMMetaSettingInfoEditor *info = &nm_meta_setting_infos_editor[m];
+ GType gtype;
+ NMSettingPriority base_priority;
+ gboolean is_base_type;
g_assert(info);
g_assert(info->meta_type == &nm_meta_type_setting_info_editor);
@@ -97,6 +100,11 @@ test_client_meta_check(void)
} else
g_assert(!info->properties);
+ gtype = info->general->get_setting_gtype();
+ base_priority = _nm_setting_type_get_base_type_priority(gtype);
+ is_base_type = (base_priority != NM_SETTING_PRIORITY_INVALID);
+ g_assert((!!info->valid_parts) == is_base_type);
+
if (info->valid_parts) {
gsize i, l;
gs_unref_hashtable GHashTable *dup = g_hash_table_new(nm_direct_hash, NULL);
diff --git a/clients/tests/test-client.check-on-disk/test_003.expected b/clients/tests/test-client.check-on-disk/test_003.expected
index 0d471da59a..733c4faba7 100644
--- a/clients/tests/test-client.check-on-disk/test_003.expected
+++ b/clients/tests/test-client.check-on-disk/test_003.expected
@@ -716,12 +716,12 @@ stdout: 51 bytes
GENERAL.STATE: aktywowano
<<<
-size: 5008
+size: 5010
location: clients/tests/test-client.py:test_003()/29
cmd: $NMCLI con s ethernet
lang: C
returncode: 0
-stdout: 4878 bytes
+stdout: 4880 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -818,7 +818,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -830,12 +830,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5040
+size: 5042
location: clients/tests/test-client.py:test_003()/30
cmd: $NMCLI con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4900 bytes
+stdout: 4902 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -932,7 +932,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -952,22 +952,22 @@ returncode: 0
stdout: 1272 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
+eth0 ethernet connected unknown unknown /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1420
+size: 1421
location: clients/tests/test-client.py:test_003()/32
cmd: $NMCLI -f ALL dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1277 bytes
+stdout: 1278 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
+eth0 ethernet połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
@@ -1012,13 +1012,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -1036,7 +1036,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -1065,12 +1065,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3782
+size: 3783
location: clients/tests/test-client.py:test_003()/36
cmd: $NMCLI -f ALL dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -1083,13 +1083,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -1107,7 +1107,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -1136,12 +1136,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2388
+size: 2390
location: clients/tests/test-client.py:test_003()/37
cmd: $NMCLI -f ALL -t dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -1154,13 +1154,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -1178,7 +1178,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -1207,12 +1207,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2398
+size: 2400
location: clients/tests/test-client.py:test_003()/38
cmd: $NMCLI -f ALL -t dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -1225,13 +1225,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -1249,7 +1249,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -1644,12 +1644,12 @@ GENERAL.STATE: aktywowano
GENERAL.STATE: aktywowano
<<<
-size: 5716
+size: 5720
location: clients/tests/test-client.py:test_003()/54
cmd: $NMCLI con s ethernet
lang: C
returncode: 0
-stdout: 5586 bytes
+stdout: 5590 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1746,7 +1746,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -1760,7 +1760,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -1772,12 +1772,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5752
+size: 5756
location: clients/tests/test-client.py:test_003()/55
cmd: $NMCLI con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5612 bytes
+stdout: 5616 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -1874,7 +1874,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -1888,7 +1888,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -1908,23 +1908,23 @@ returncode: 0
stdout: 1272 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
-eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/2
+eth0 ethernet connected unknown unknown /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
+eth1 ethernet connected unknown unknown /org/freedesktop/NetworkManager/Devices/2 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/2
wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1420
+size: 1422
location: clients/tests/test-client.py:test_003()/57
cmd: $NMCLI -f ALL dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1277 bytes
+stdout: 1279 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
-eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/2
+eth0 ethernet połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1
+eth1 ethernet połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/2
wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
@@ -1968,13 +1968,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -1992,7 +1992,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2021,12 +2021,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3782
+size: 3783
location: clients/tests/test-client.py:test_003()/61
cmd: $NMCLI -f ALL dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -2039,13 +2039,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2063,7 +2063,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2092,12 +2092,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2388
+size: 2390
location: clients/tests/test-client.py:test_003()/62
cmd: $NMCLI -f ALL -t dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -2110,13 +2110,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -2134,7 +2134,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2163,12 +2163,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2398
+size: 2400
location: clients/tests/test-client.py:test_003()/63
cmd: $NMCLI -f ALL -t dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -2181,13 +2181,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -2205,7 +2205,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2292,12 +2292,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet
<<<
-size: 5719
+size: 5723
location: clients/tests/test-client.py:test_003()/68
cmd: $NMCLI con s ethernet
lang: C
returncode: 0
-stdout: 5589 bytes
+stdout: 5593 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2394,7 +2394,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -2408,7 +2408,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -2420,12 +2420,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5756
+size: 5760
location: clients/tests/test-client.py:test_003()/69
cmd: $NMCLI con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5616 bytes
+stdout: 5620 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2522,7 +2522,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -2536,7 +2536,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -2548,12 +2548,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5051
+size: 5053
location: clients/tests/test-client.py:test_003()/70
cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 4881 bytes
+stdout: 4883 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2650,7 +2650,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -2662,12 +2662,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5084
+size: 5086
location: clients/tests/test-client.py:test_003()/71
cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4904 bytes
+stdout: 4906 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -2764,7 +2764,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -2794,13 +2794,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2818,7 +2818,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2847,12 +2847,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3782
+size: 3783
location: clients/tests/test-client.py:test_003()/73
cmd: $NMCLI -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -2865,13 +2865,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2889,7 +2889,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -2976,12 +2976,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet
<<<
-size: 5731
+size: 5735
location: clients/tests/test-client.py:test_003()/78
cmd: $NMCLI --color yes con s ethernet
lang: C
returncode: 0
-stdout: 5589 bytes
+stdout: 5593 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3078,7 +3078,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -3092,7 +3092,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -3104,12 +3104,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5768
+size: 5772
location: clients/tests/test-client.py:test_003()/79
cmd: $NMCLI --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5616 bytes
+stdout: 5620 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3206,7 +3206,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -3220,7 +3220,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -3232,12 +3232,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5063
+size: 5065
location: clients/tests/test-client.py:test_003()/80
cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 4881 bytes
+stdout: 4883 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3334,7 +3334,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -3346,12 +3346,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5096
+size: 5098
location: clients/tests/test-client.py:test_003()/81
cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4904 bytes
+stdout: 4906 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -3448,7 +3448,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -3478,13 +3478,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -3502,7 +3502,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -3531,12 +3531,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3794
+size: 3795
location: clients/tests/test-client.py:test_003()/83
cmd: $NMCLI --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -3549,13 +3549,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -3573,7 +3573,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -3676,12 +3676,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet
<<<
-size: 6973
+size: 6977
location: clients/tests/test-client.py:test_003()/88
cmd: $NMCLI --pretty con s ethernet
lang: C
returncode: 0
-stdout: 6834 bytes
+stdout: 6838 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -3789,7 +3789,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -3807,7 +3807,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -3820,12 +3820,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 7029
+size: 7033
location: clients/tests/test-client.py:test_003()/89
cmd: $NMCLI --pretty con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6880 bytes
+stdout: 6884 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -3933,7 +3933,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -3951,7 +3951,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -3964,12 +3964,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 5992
+size: 5994
location: clients/tests/test-client.py:test_003()/90
cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 5813 bytes
+stdout: 5815 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -4077,7 +4077,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4090,12 +4090,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6037
+size: 6039
location: clients/tests/test-client.py:test_003()/91
cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5848 bytes
+stdout: 5850 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -4203,7 +4203,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4237,13 +4237,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -4264,7 +4264,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -4299,12 +4299,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | e
-------------------------------------------------------------------------------
<<<
-size: 4728
+size: 4729
location: clients/tests/test-client.py:test_003()/93
cmd: $NMCLI --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4573 bytes
+stdout: 4574 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -4320,13 +4320,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -4347,7 +4347,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -4456,12 +4456,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA ethernet
<<<
-size: 6985
+size: 6989
location: clients/tests/test-client.py:test_003()/98
cmd: $NMCLI --pretty --color yes con s ethernet
lang: C
returncode: 0
-stdout: 6834 bytes
+stdout: 6838 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -4569,7 +4569,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4587,7 +4587,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4600,12 +4600,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 7041
+size: 7045
location: clients/tests/test-client.py:test_003()/99
cmd: $NMCLI --pretty --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6880 bytes
+stdout: 6884 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -4713,7 +4713,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4731,7 +4731,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4744,12 +4744,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6005
+size: 6007
location: clients/tests/test-client.py:test_003()/100
cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 5813 bytes
+stdout: 5815 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -4857,7 +4857,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4870,12 +4870,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6050
+size: 6052
location: clients/tests/test-client.py:test_003()/101
cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5848 bytes
+stdout: 5850 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -4983,7 +4983,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -5017,13 +5017,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5044,7 +5044,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -5079,12 +5079,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | e
-------------------------------------------------------------------------------
<<<
-size: 4741
+size: 4742
location: clients/tests/test-client.py:test_003()/103
cmd: $NMCLI --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4573 bytes
+stdout: 4574 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -5100,13 +5100,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5127,7 +5127,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -5216,12 +5216,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL:gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
<<<
-size: 3062
+size: 3070
location: clients/tests/test-client.py:test_003()/108
cmd: $NMCLI --terse con s ethernet
lang: C
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -5318,7 +5318,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5332,7 +5332,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5344,12 +5344,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 3072
+size: 3080
location: clients/tests/test-client.py:test_003()/109
cmd: $NMCLI --terse con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -5446,7 +5446,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5460,7 +5460,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5472,12 +5472,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2716
+size: 2720
location: clients/tests/test-client.py:test_003()/110
cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -5574,7 +5574,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5586,12 +5586,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2726
+size: 2730
location: clients/tests/test-client.py:test_003()/111
cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -5688,7 +5688,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -5700,12 +5700,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2394
+size: 2396
location: clients/tests/test-client.py:test_003()/112
cmd: $NMCLI --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -5718,13 +5718,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -5742,7 +5742,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -5771,12 +5771,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2404
+size: 2406
location: clients/tests/test-client.py:test_003()/113
cmd: $NMCLI --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -5789,13 +5789,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -5813,7 +5813,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -5896,12 +5896,12 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL:gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
<<<
-size: 3074
+size: 3082
location: clients/tests/test-client.py:test_003()/118
cmd: $NMCLI --terse --color yes con s ethernet
lang: C
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -5998,7 +5998,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6012,7 +6012,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6024,12 +6024,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 3084
+size: 3092
location: clients/tests/test-client.py:test_003()/119
cmd: $NMCLI --terse --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -6126,7 +6126,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6140,7 +6140,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6152,12 +6152,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2728
+size: 2732
location: clients/tests/test-client.py:test_003()/120
cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -6254,7 +6254,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6266,12 +6266,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2738
+size: 2742
location: clients/tests/test-client.py:test_003()/121
cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -6368,7 +6368,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -6380,12 +6380,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2406
+size: 2408
location: clients/tests/test-client.py:test_003()/122
cmd: $NMCLI --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -6398,13 +6398,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -6422,7 +6422,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -6451,12 +6451,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2416
+size: 2418
location: clients/tests/test-client.py:test_003()/123
cmd: $NMCLI --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -6469,13 +6469,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -6493,7 +6493,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -6603,11 +6603,11 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6634,11 +6634,11 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6665,7 +6665,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6692,19 +6692,19 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 3148
+size: 3146
location: clients/tests/test-client.py:test_003()/132
cmd: $NMCLI --mode tabular -f all dev show eth0
lang: C
returncode: 0
-stdout: 2996 bytes
+stdout: 2994 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -6713,7 +6713,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -6731,15 +6731,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3179
+size: 3176
location: clients/tests/test-client.py:test_003()/133
cmd: $NMCLI --mode tabular -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3017 bytes
+stdout: 3014 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -6747,8 +6747,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -6847,11 +6847,11 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6878,11 +6878,11 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6909,7 +6909,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -6936,19 +6936,19 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 3160
+size: 3158
location: clients/tests/test-client.py:test_003()/142
cmd: $NMCLI --mode tabular --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 2996 bytes
+stdout: 2994 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -6957,7 +6957,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -6975,15 +6975,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3191
+size: 3188
location: clients/tests/test-client.py:test_003()/143
cmd: $NMCLI --mode tabular --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3017 bytes
+stdout: 3014 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -6991,8 +6991,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -7119,7 +7119,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
======================================================================
@@ -7127,7 +7127,7 @@ GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- acti
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7166,7 +7166,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
===========================================================================
@@ -7174,7 +7174,7 @@ GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- akty
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7213,7 +7213,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7252,23 +7252,23 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 4736
+size: 4733
location: clients/tests/test-client.py:test_003()/152
cmd: $NMCLI --mode tabular --pretty -f all dev show eth0
lang: C
returncode: 0
-stdout: 4575 bytes
+stdout: 4572 bytes
>>>
=========================
Device details (eth0)
=========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -7280,7 +7280,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -7303,19 +7303,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 4804
+size: 4799
location: clients/tests/test-client.py:test_003()/153
cmd: $NMCLI --mode tabular --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4633 bytes
+stdout: 4628 bytes
>>>
==================================
Informacje o urządzeniu (eth0)
==================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -7325,9 +7325,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -7459,7 +7459,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 activated no no -- no /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
======================================================================
@@ -7467,7 +7467,7 @@ GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- acti
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7506,7 +7506,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 eth1 aktywowano nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
===========================================================================
@@ -7514,7 +7514,7 @@ GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth1 -- akty
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7553,7 +7553,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -7592,23 +7592,23 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 4748
+size: 4745
location: clients/tests/test-client.py:test_003()/162
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 4575 bytes
+stdout: 4572 bytes
>>>
=========================
Device details (eth0)
=========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -7620,7 +7620,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -7643,19 +7643,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 4816
+size: 4811
location: clients/tests/test-client.py:test_003()/163
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4633 bytes
+stdout: 4628 bytes
>>>
==================================
Informacje o urządzeniu (eth0)
==================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -7665,9 +7665,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -7744,81 +7744,81 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL:gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
<<<
-size: 845
+size: 853
location: clients/tests/test-client.py:test_003()/168
cmd: $NMCLI --mode tabular --terse con s ethernet
lang: C
returncode: 0
-stdout: 692 bytes
+stdout: 700 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1::activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 855
+size: 863
location: clients/tests/test-client.py:test_003()/169
cmd: $NMCLI --mode tabular --terse con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 692 bytes
+stdout: 700 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1::activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 697
+size: 701
location: clients/tests/test-client.py:test_003()/170
cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 504 bytes
+stdout: 508 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 707
+size: 711
location: clients/tests/test-client.py:test_003()/171
cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 504 bytes
+stdout: 508 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 1441
+size: 1443
location: clients/tests/test-client.py:test_003()/172
cmd: $NMCLI --mode tabular --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 1281 bytes
+stdout: 1283 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -7826,17 +7826,17 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1,2,4}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 1451
+size: 1453
location: clients/tests/test-client.py:test_003()/173
cmd: $NMCLI --mode tabular --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1281 bytes
+stdout: 1283 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -7898,81 +7898,81 @@ UUID-con-gsm1-REPLACED-REPLACED-REPL:gsm
UUID-con-xx1-REPLACED-REPLACED-REPLA:802-3-ethernet
<<<
-size: 857
+size: 865
location: clients/tests/test-client.py:test_003()/178
cmd: $NMCLI --mode tabular --terse --color yes con s ethernet
lang: C
returncode: 0
-stdout: 692 bytes
+stdout: 700 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1::activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 867
+size: 875
location: clients/tests/test-client.py:test_003()/179
cmd: $NMCLI --mode tabular --terse --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 692 bytes
+stdout: 700 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1::activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth1:eth1:activated:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/4::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 709
+size: 713
location: clients/tests/test-client.py:test_003()/180
cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 504 bytes
+stdout: 508 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 719
+size: 723
location: clients/tests/test-client.py:test_003()/181
cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 504 bytes
+stdout: 508 bytes
>>>
connection:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL::802-3-ethernet::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
802-3-ethernet::0::no:::::auto::::default:
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
proxy:none:no::
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 1453
+size: 1455
location: clients/tests/test-client.py:test_003()/182
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 1281 bytes
+stdout: 1283 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -7980,17 +7980,17 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1,2,4}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 1463
+size: 1465
location: clients/tests/test-client.py:test_003()/183
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1281 bytes
+stdout: 1283 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -8200,12 +8200,12 @@ UUID: UUID-con-xx1-REPLACED-REPLACED-REPLA
TYPE: ethernet
<<<
-size: 5737
+size: 5741
location: clients/tests/test-client.py:test_003()/188
cmd: $NMCLI --mode multiline con s ethernet
lang: C
returncode: 0
-stdout: 5589 bytes
+stdout: 5593 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8302,7 +8302,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -8316,7 +8316,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -8328,12 +8328,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5774
+size: 5778
location: clients/tests/test-client.py:test_003()/189
cmd: $NMCLI --mode multiline con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5616 bytes
+stdout: 5620 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8430,7 +8430,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -8444,7 +8444,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -8456,12 +8456,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5069
+size: 5071
location: clients/tests/test-client.py:test_003()/190
cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 4881 bytes
+stdout: 4883 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8558,7 +8558,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -8570,12 +8570,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5102
+size: 5104
location: clients/tests/test-client.py:test_003()/191
cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4904 bytes
+stdout: 4906 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -8672,7 +8672,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -8702,13 +8702,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -8726,7 +8726,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -8755,12 +8755,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3800
+size: 3801
location: clients/tests/test-client.py:test_003()/193
cmd: $NMCLI --mode multiline -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -8773,13 +8773,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -8797,7 +8797,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -9028,12 +9028,12 @@ UUID: UUID-con-xx1-REPLACED-REPLACED-REPLA
TYPE: ethernet
<<<
-size: 5749
+size: 5753
location: clients/tests/test-client.py:test_003()/198
cmd: $NMCLI --mode multiline --color yes con s ethernet
lang: C
returncode: 0
-stdout: 5589 bytes
+stdout: 5593 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -9130,7 +9130,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -9144,7 +9144,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -9156,12 +9156,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5786
+size: 5790
location: clients/tests/test-client.py:test_003()/199
cmd: $NMCLI --mode multiline --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5616 bytes
+stdout: 5620 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -9258,7 +9258,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -9272,7 +9272,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -9284,12 +9284,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5081
+size: 5083
location: clients/tests/test-client.py:test_003()/200
cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 4881 bytes
+stdout: 4883 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -9386,7 +9386,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -9398,12 +9398,12 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 5114
+size: 5116
location: clients/tests/test-client.py:test_003()/201
cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4904 bytes
+stdout: 4906 bytes
>>>
connection.id: ethernet
connection.uuid: UUID-ethernet-REPLACED-REPLACED-REPL
@@ -9500,7 +9500,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -9530,13 +9530,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -9554,7 +9554,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -9583,12 +9583,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 3812
+size: 3813
location: clients/tests/test-client.py:test_003()/203
cmd: $NMCLI --mode multiline --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3636 bytes
+stdout: 3637 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -9601,13 +9601,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9625,7 +9625,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -9886,12 +9886,12 @@ TYPE: ethernet
-------------------------------------------------------------------------------
<<<
-size: 6991
+size: 6995
location: clients/tests/test-client.py:test_003()/208
cmd: $NMCLI --mode multiline --pretty con s ethernet
lang: C
returncode: 0
-stdout: 6834 bytes
+stdout: 6838 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -9999,7 +9999,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -10017,7 +10017,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -10030,12 +10030,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 7047
+size: 7051
location: clients/tests/test-client.py:test_003()/209
cmd: $NMCLI --mode multiline --pretty con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6880 bytes
+stdout: 6884 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -10143,7 +10143,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -10161,7 +10161,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -10174,12 +10174,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6010
+size: 6012
location: clients/tests/test-client.py:test_003()/210
cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 5813 bytes
+stdout: 5815 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -10287,7 +10287,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -10300,12 +10300,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6055
+size: 6057
location: clients/tests/test-client.py:test_003()/211
cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5848 bytes
+stdout: 5850 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -10413,7 +10413,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -10447,13 +10447,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -10474,7 +10474,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -10509,12 +10509,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | e
-------------------------------------------------------------------------------
<<<
-size: 4746
+size: 4747
location: clients/tests/test-client.py:test_003()/213
cmd: $NMCLI --mode multiline --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4573 bytes
+stdout: 4574 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -10530,13 +10530,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -10557,7 +10557,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -10824,12 +10824,12 @@ TYPE: ethernet
-------------------------------------------------------------------------------
<<<
-size: 7003
+size: 7007
location: clients/tests/test-client.py:test_003()/218
cmd: $NMCLI --mode multiline --pretty --color yes con s ethernet
lang: C
returncode: 0
-stdout: 6834 bytes
+stdout: 6838 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -10937,7 +10937,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -10955,7 +10955,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -10968,12 +10968,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 7059
+size: 7063
location: clients/tests/test-client.py:test_003()/219
cmd: $NMCLI --mode multiline --pretty --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6880 bytes
+stdout: 6884 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -11081,7 +11081,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth1
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11099,7 +11099,7 @@ GENERAL.MASTER-PATH: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11112,12 +11112,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6022
+size: 6024
location: clients/tests/test-client.py:test_003()/220
cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 5813 bytes
+stdout: 5815 bytes
>>>
===============================================================================
Connection profile details (ethernet)
@@ -11225,7 +11225,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -11238,12 +11238,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 6067
+size: 6069
location: clients/tests/test-client.py:test_003()/221
cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5848 bytes
+stdout: 5850 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (ethernet)
@@ -11351,7 +11351,7 @@ proxy.pac-script: --
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11385,13 +11385,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -11412,7 +11412,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -11447,12 +11447,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: UUID-ethernet-REPLACED-REPLACED-REPL | e
-------------------------------------------------------------------------------
<<<
-size: 4758
+size: 4759
location: clients/tests/test-client.py:test_003()/223
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4573 bytes
+stdout: 4574 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -11468,13 +11468,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -11495,7 +11495,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -11732,12 +11732,12 @@ UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
TYPE:802-3-ethernet
<<<
-size: 3079
+size: 3087
location: clients/tests/test-client.py:test_003()/228
cmd: $NMCLI --mode multiline --terse con s ethernet
lang: C
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11834,7 +11834,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -11848,7 +11848,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -11860,12 +11860,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 3089
+size: 3097
location: clients/tests/test-client.py:test_003()/229
cmd: $NMCLI --mode multiline --terse con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -11962,7 +11962,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -11976,7 +11976,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -11988,12 +11988,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2733
+size: 2737
location: clients/tests/test-client.py:test_003()/230
cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -12090,7 +12090,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12102,12 +12102,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2743
+size: 2747
location: clients/tests/test-client.py:test_003()/231
cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -12204,7 +12204,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12216,12 +12216,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2411
+size: 2413
location: clients/tests/test-client.py:test_003()/232
cmd: $NMCLI --mode multiline --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -12234,13 +12234,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -12258,7 +12258,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -12287,12 +12287,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2421
+size: 2423
location: clients/tests/test-client.py:test_003()/233
cmd: $NMCLI --mode multiline --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -12305,13 +12305,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -12329,7 +12329,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -12560,12 +12560,12 @@ UUID:UUID-con-xx1-REPLACED-REPLACED-REPLA
TYPE:802-3-ethernet
<<<
-size: 3091
+size: 3099
location: clients/tests/test-client.py:test_003()/238
cmd: $NMCLI --mode multiline --terse --color yes con s ethernet
lang: C
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -12662,7 +12662,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12676,7 +12676,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12688,12 +12688,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 3101
+size: 3109
location: clients/tests/test-client.py:test_003()/239
cmd: $NMCLI --mode multiline --terse --color yes con s ethernet
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2923 bytes
+stdout: 2931 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -12790,7 +12790,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth1
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12804,7 +12804,7 @@ GENERAL.MASTER-PATH:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12816,12 +12816,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2745
+size: 2749
location: clients/tests/test-client.py:test_003()/240
cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -12918,7 +12918,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -12930,12 +12930,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2755
+size: 2759
location: clients/tests/test-client.py:test_003()/241
cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2537 bytes
+stdout: 2541 bytes
>>>
connection.id:ethernet
connection.uuid:UUID-ethernet-REPLACED-REPLACED-REPL
@@ -13032,7 +13032,7 @@ proxy.pac-script:
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -13044,12 +13044,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2423
+size: 2425
location: clients/tests/test-client.py:test_003()/242
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -13062,13 +13062,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -13086,7 +13086,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13115,12 +13115,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:UUID-ethernet-REPLACED-REPLACED-REPL | ethernet
<<<
-size: 2433
+size: 2435
location: clients/tests/test-client.py:test_003()/243
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2249 bytes
+stdout: 2251 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -13133,13 +13133,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -13157,7 +13157,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13262,17 +13262,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 880
+size: 882
location: clients/tests/test-client.py:test_003()/250
cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 712 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -13284,17 +13284,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 895
+size: 897
location: clients/tests/test-client.py:test_003()/251
cmd: $NMCLI c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 715 bytes
+stdout: 717 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -13324,13 +13324,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13348,7 +13348,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13377,12 +13377,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3805
+size: 3806
location: clients/tests/test-client.py:test_003()/253
cmd: $NMCLI -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3658 bytes
+stdout: 3659 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -13395,13 +13395,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13419,7 +13419,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13524,17 +13524,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 892
+size: 894
location: clients/tests/test-client.py:test_003()/260
cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 712 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -13546,17 +13546,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 907
+size: 909
location: clients/tests/test-client.py:test_003()/261
cmd: $NMCLI --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 715 bytes
+stdout: 717 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -13586,13 +13586,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13610,7 +13610,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13639,12 +13639,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3817
+size: 3818
location: clients/tests/test-client.py:test_003()/263
cmd: $NMCLI --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3658 bytes
+stdout: 3659 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -13657,13 +13657,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13681,7 +13681,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -13802,12 +13802,12 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 1416
+size: 1418
location: clients/tests/test-client.py:test_003()/270
cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 1236 bytes
+stdout: 1238 bytes
>>>
===============================================================================
Connection profile details
@@ -13818,7 +13818,7 @@ stdout: 1236 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -13831,12 +13831,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1443
+size: 1445
location: clients/tests/test-client.py:test_003()/271
cmd: $NMCLI --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1253 bytes
+stdout: 1255 bytes
>>>
===============================================================================
Szczegóły profilu połączenia
@@ -13847,7 +13847,7 @@ stdout: 1253 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -13881,13 +13881,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13908,7 +13908,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -13943,12 +13943,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkMa
-------------------------------------------------------------------------------
<<<
-size: 4751
+size: 4752
location: clients/tests/test-client.py:test_003()/273
cmd: $NMCLI --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4595 bytes
+stdout: 4596 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -13964,13 +13964,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13991,7 +13991,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -14118,12 +14118,12 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 1428
+size: 1430
location: clients/tests/test-client.py:test_003()/280
cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 1236 bytes
+stdout: 1238 bytes
>>>
===============================================================================
Connection profile details
@@ -14134,7 +14134,7 @@ stdout: 1236 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -14147,12 +14147,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1455
+size: 1457
location: clients/tests/test-client.py:test_003()/281
cmd: $NMCLI --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1253 bytes
+stdout: 1255 bytes
>>>
===============================================================================
Szczegóły profilu połączenia
@@ -14163,7 +14163,7 @@ stdout: 1253 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -14197,13 +14197,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -14224,7 +14224,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -14259,12 +14259,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkMa
-------------------------------------------------------------------------------
<<<
-size: 4763
+size: 4764
location: clients/tests/test-client.py:test_003()/283
cmd: $NMCLI --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4595 bytes
+stdout: 4596 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -14280,13 +14280,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -14307,7 +14307,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -14414,17 +14414,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 566
+size: 570
location: clients/tests/test-client.py:test_003()/290
cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -14436,17 +14436,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 576
+size: 580
location: clients/tests/test-client.py:test_003()/291
cmd: $NMCLI --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -14458,12 +14458,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2414
+size: 2416
location: clients/tests/test-client.py:test_003()/292
cmd: $NMCLI --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -14476,13 +14476,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -14500,7 +14500,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -14529,12 +14529,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:<invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 2424
+size: 2426
location: clients/tests/test-client.py:test_003()/293
cmd: $NMCLI --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -14547,13 +14547,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -14571,7 +14571,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -14672,17 +14672,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 578
+size: 582
location: clients/tests/test-client.py:test_003()/300
cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -14694,17 +14694,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 588
+size: 592
location: clients/tests/test-client.py:test_003()/301
cmd: $NMCLI --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -14716,12 +14716,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2426
+size: 2428
location: clients/tests/test-client.py:test_003()/302
cmd: $NMCLI --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -14734,13 +14734,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -14758,7 +14758,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -14787,12 +14787,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:<invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 2436
+size: 2438
location: clients/tests/test-client.py:test_003()/303
cmd: $NMCLI --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -14805,13 +14805,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -14829,7 +14829,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -14942,7 +14942,7 @@ returncode: 0
stdout: 507 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -14954,19 +14954,19 @@ returncode: 0
stdout: 511 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 3188
+size: 3186
location: clients/tests/test-client.py:test_003()/312
cmd: $NMCLI --mode tabular -f all dev show eth0
lang: C
returncode: 0
-stdout: 3036 bytes
+stdout: 3034 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -14975,7 +14975,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -14993,15 +14993,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3223
+size: 3220
location: clients/tests/test-client.py:test_003()/313
cmd: $NMCLI --mode tabular -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3061 bytes
+stdout: 3058 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -15009,8 +15009,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -15112,7 +15112,7 @@ returncode: 0
stdout: 507 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -15124,19 +15124,19 @@ returncode: 0
stdout: 511 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 3200
+size: 3198
location: clients/tests/test-client.py:test_003()/322
cmd: $NMCLI --mode tabular --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 3036 bytes
+stdout: 3034 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -15145,7 +15145,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -15163,15 +15163,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3235
+size: 3232
location: clients/tests/test-client.py:test_003()/323
cmd: $NMCLI --mode tabular --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3061 bytes
+stdout: 3058 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -15179,8 +15179,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.6.238/29 -- dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64 192.168.213.113 sear4.foo4.bar 192.168.156.115 | 192.168.8.33
@@ -15305,7 +15305,7 @@ stdout: 1063 bytes
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -15324,23 +15324,23 @@ stdout: 1098 bytes
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 4796
+size: 4793
location: clients/tests/test-client.py:test_003()/332
cmd: $NMCLI --mode tabular --pretty -f all dev show eth0
lang: C
returncode: 0
-stdout: 4635 bytes
+stdout: 4632 bytes
>>>
=========================
Device details (eth0)
=========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -15352,7 +15352,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -15375,19 +15375,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 4870
+size: 4865
location: clients/tests/test-client.py:test_003()/333
cmd: $NMCLI --mode tabular --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4699 bytes
+stdout: 4694 bytes
>>>
==================================
Informacje o urządzeniu (eth0)
==================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -15397,9 +15397,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -15529,7 +15529,7 @@ stdout: 1063 bytes
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 deactivating no no -- no /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
@@ -15548,23 +15548,23 @@ stdout: 1098 bytes
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 -- dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
+GENERAL ethernet UUID-ethernet-REPLACED-REPLACED-REPL eth0 eth0 dezaktywowanie nie nie -- nie /org/freedesktop/NetworkManager/ActiveConnection/1 /org/freedesktop/NetworkManager/Settings/Connection/4 -- --
<<<
-size: 4808
+size: 4805
location: clients/tests/test-client.py:test_003()/342
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 4635 bytes
+stdout: 4632 bytes
>>>
=========================
Device details (eth0)
=========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -15576,7 +15576,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -15599,19 +15599,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILA
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1,2,4} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 4882
+size: 4877
location: clients/tests/test-client.py:test_003()/343
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4699 bytes
+stdout: 4694 bytes
>>>
==================================
Informacje o urządzeniu (eth0)
==================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- C0:61:AE:26:4D:D7 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- ethernet UUID-ethernet-REPLACED-REPLACED-REPL /org/freedesktop/NetworkManager/ActiveConnection/1 nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -15621,9 +15621,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -15718,37 +15718,37 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 383
+size: 387
location: clients/tests/test-client.py:test_003()/350
cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 190 bytes
+stdout: 194 bytes
>>>
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 393
+size: 397
location: clients/tests/test-client.py:test_003()/351
cmd: $NMCLI --mode tabular --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 190 bytes
+stdout: 194 bytes
>>>
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 1461
+size: 1463
location: clients/tests/test-client.py:test_003()/352
cmd: $NMCLI --mode tabular --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 1301 bytes
+stdout: 1303 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -15756,17 +15756,17 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1,2,4}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 1471
+size: 1473
location: clients/tests/test-client.py:test_003()/353
cmd: $NMCLI --mode tabular --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1301 bytes
+stdout: 1303 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -15846,37 +15846,37 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 395
+size: 399
location: clients/tests/test-client.py:test_003()/360
cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 190 bytes
+stdout: 194 bytes
>>>
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 405
+size: 409
location: clients/tests/test-client.py:test_003()/361
cmd: $NMCLI --mode tabular --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 190 bytes
+stdout: 194 bytes
>>>
-GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0::deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
+GENERAL:ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:eth0:eth0:deactivating:no:no::no:/org/freedesktop/NetworkManager/ActiveConnection/1:/org/freedesktop/NetworkManager/Settings/Connection/4::
<<<
-size: 1473
+size: 1475
location: clients/tests/test-client.py:test_003()/362
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 1301 bytes
+stdout: 1303 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -15884,17 +15884,17 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1,2,4}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1 | UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1 | <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 1483
+size: 1485
location: clients/tests/test-client.py:test_003()/363
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1301 bytes
+stdout: 1303 bytes
>>>
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::C0\:61\:AE\:26\:4D\:D7:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no::ethernet:UUID-ethernet-REPLACED-REPLACED-REPL:/org/freedesktop/NetworkManager/ActiveConnection/1:unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.6.238/29::dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792 | dst = 192.168.155.50/19, nh = 192.168.127.64:192.168.213.113:sear4.foo4.bar:192.168.156.115 | 192.168.8.33
DHCP4:
IP6:2001\:a\:\:29c0\:62b9\:2e01\:30a/69 | 2001\:a\:\:6433\:6420\:34f9\:3801/115 | 2001\:a\:\:8191\:ed6b\:8ce\:b60/103:2001\:a\:\:2b50\:64d1\:9a91\:23b4:dst = 2001\:a\:\:5ecb\:f5ee\:fb96\:856c/100, nh = \:\:, mt = 4249082794:2001\:a\:\:1323\:9a78\:2b82\:d16b | 2001\:a\:\:4e1\:24e6\:b8c1\:91bb | 2001\:a\:\:bd96\:3bed\:fbd6\:19c5:sear6.fo.x.y | sear6.foo4.bar
@@ -16120,17 +16120,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 897
+size: 899
location: clients/tests/test-client.py:test_003()/370
cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 712 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -16142,17 +16142,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 912
+size: 914
location: clients/tests/test-client.py:test_003()/371
cmd: $NMCLI --mode multiline c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 715 bytes
+stdout: 717 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -16182,13 +16182,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -16206,7 +16206,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -16235,12 +16235,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3822
+size: 3823
location: clients/tests/test-client.py:test_003()/373
cmd: $NMCLI --mode multiline -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3658 bytes
+stdout: 3659 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -16253,13 +16253,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -16277,7 +16277,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -16524,17 +16524,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 909
+size: 911
location: clients/tests/test-client.py:test_003()/380
cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 712 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -16546,17 +16546,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 924
+size: 926
location: clients/tests/test-client.py:test_003()/381
cmd: $NMCLI --mode multiline --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 715 bytes
+stdout: 717 bytes
>>>
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -16586,13 +16586,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -16610,7 +16610,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -16639,12 +16639,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 3834
+size: 3835
location: clients/tests/test-client.py:test_003()/383
cmd: $NMCLI --mode multiline --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3658 bytes
+stdout: 3659 bytes
>>>
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
@@ -16657,13 +16657,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -16681,7 +16681,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -16956,12 +16956,12 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 1433
+size: 1435
location: clients/tests/test-client.py:test_003()/390
cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 1236 bytes
+stdout: 1238 bytes
>>>
===============================================================================
Connection profile details
@@ -16972,7 +16972,7 @@ stdout: 1236 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -16985,12 +16985,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1460
+size: 1462
location: clients/tests/test-client.py:test_003()/391
cmd: $NMCLI --mode multiline --pretty c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1253 bytes
+stdout: 1255 bytes
>>>
===============================================================================
Szczegóły profilu połączenia
@@ -17001,7 +17001,7 @@ stdout: 1253 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -17035,13 +17035,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -17062,7 +17062,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -17097,12 +17097,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkMa
-------------------------------------------------------------------------------
<<<
-size: 4768
+size: 4769
location: clients/tests/test-client.py:test_003()/393
cmd: $NMCLI --mode multiline --pretty -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4595 bytes
+stdout: 4596 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -17118,13 +17118,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -17145,7 +17145,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -17426,12 +17426,12 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 1445
+size: 1447
location: clients/tests/test-client.py:test_003()/400
cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 1236 bytes
+stdout: 1238 bytes
>>>
===============================================================================
Connection profile details
@@ -17442,7 +17442,7 @@ stdout: 1236 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: deactivating
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -17455,12 +17455,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1472
+size: 1474
location: clients/tests/test-client.py:test_003()/401
cmd: $NMCLI --mode multiline --pretty --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1253 bytes
+stdout: 1255 bytes
>>>
===============================================================================
Szczegóły profilu połączenia
@@ -17471,7 +17471,7 @@ stdout: 1253 bytes
GENERAL.NAME: ethernet
GENERAL.UUID: UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES: eth0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.STATE: dezaktywowanie
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -17505,13 +17505,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -17532,7 +17532,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -17567,12 +17567,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[3]: <invisible> | /org/freedesktop/NetworkMa
-------------------------------------------------------------------------------
<<<
-size: 4780
+size: 4781
location: clients/tests/test-client.py:test_003()/403
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4595 bytes
+stdout: 4596 bytes
>>>
===============================================================================
Informacje o urządzeniu (eth0)
@@ -17588,13 +17588,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: C0:61:AE:26:4D:D7
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -17615,7 +17615,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.6.238/29
IP4.GATEWAY: --
@@ -17868,17 +17868,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 583
+size: 587
location: clients/tests/test-client.py:test_003()/410
cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -17890,17 +17890,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 593
+size: 597
location: clients/tests/test-client.py:test_003()/411
cmd: $NMCLI --mode multiline --terse c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -17912,12 +17912,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2431
+size: 2433
location: clients/tests/test-client.py:test_003()/412
cmd: $NMCLI --mode multiline --terse -f all dev show eth0
lang: C
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -17930,13 +17930,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17954,7 +17954,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -17983,12 +17983,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:<invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 2441
+size: 2443
location: clients/tests/test-client.py:test_003()/413
cmd: $NMCLI --mode multiline --terse -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -18001,13 +18001,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -18025,7 +18025,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -18272,17 +18272,17 @@ stderr: 58 bytes
Błąd: ethernet — nie ma takiego profilu połączenia.
<<<
-size: 595
+size: 599
location: clients/tests/test-client.py:test_003()/420
cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18294,17 +18294,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 605
+size: 609
location: clients/tests/test-client.py:test_003()/421
cmd: $NMCLI --mode multiline --terse --color yes c s /org/freedesktop/NetworkManager/ActiveConnection/1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 392 bytes
>>>
GENERAL.NAME:ethernet
GENERAL.UUID:UUID-ethernet-REPLACED-REPLACED-REPL
GENERAL.DEVICES:eth0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.STATE:deactivating
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18316,12 +18316,12 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 2443
+size: 2445
location: clients/tests/test-client.py:test_003()/422
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show eth0
lang: C
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -18334,13 +18334,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -18358,7 +18358,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
@@ -18387,12 +18387,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[2]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-
CONNECTIONS.AVAILABLE-CONNECTIONS[3]:<invisible> | /org/freedesktop/NetworkManager/Settings/Connection/4
<<<
-size: 2453
+size: 2455
location: clients/tests/test-client.py:test_003()/423
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show eth0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2269 bytes
+stdout: 2271 bytes
>>>
GENERAL.DEVICE:eth0
GENERAL.TYPE:ethernet
@@ -18405,13 +18405,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:C0:61:AE:26:4D:D7
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -18429,7 +18429,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.6.238/29
IP4.GATEWAY:
IP4.ROUTE[1]:dst = 192.168.58.133/31, nh = 192.168.50.116, mt = 3130348792
diff --git a/clients/tests/test-client.check-on-disk/test_004.expected b/clients/tests/test-client.check-on-disk/test_004.expected
index 8e30c78f98..5140c02216 100644
--- a/clients/tests/test-client.check-on-disk/test_004.expected
+++ b/clients/tests/test-client.check-on-disk/test_004.expected
@@ -562,12 +562,12 @@ con-xx1 UUID-con-xx1-REPLACED-REPLACED-REPLA wifi wlan0
con-1 5fcfd6d7-1e63-3332-8826-a7eda103792d ethernet --
<<<
-size: 5142
+size: 5145
location: clients/tests/test-client.py:test_004()/21
cmd: $NMCLI con s con-vpn-1
lang: C
returncode: 0
-stdout: 5011 bytes
+stdout: 5014 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -656,7 +656,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -676,12 +676,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5168
+size: 5171
location: clients/tests/test-client.py:test_004()/22
cmd: $NMCLI con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5027 bytes
+stdout: 5030 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -770,7 +770,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -790,12 +790,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5148
+size: 5151
location: clients/tests/test-client.py:test_004()/23
cmd: $NMCLI con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -884,7 +884,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -904,12 +904,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5178
+size: 5181
location: clients/tests/test-client.py:test_004()/24
cmd: $NMCLI con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -998,7 +998,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -1018,12 +1018,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5148
+size: 5151
location: clients/tests/test-client.py:test_004()/25
cmd: $NMCLI con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1112,7 +1112,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -1132,12 +1132,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5178
+size: 5181
location: clients/tests/test-client.py:test_004()/26
cmd: $NMCLI con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -1226,7 +1226,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -1462,17 +1462,17 @@ vpn.persistent: nie
vpn.timeout: 0
<<<
-size: 851
+size: 854
location: clients/tests/test-client.py:test_004()/31
cmd: $NMCLI -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 713 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -1484,17 +1484,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 864
+size: 867
location: clients/tests/test-client.py:test_004()/32
cmd: $NMCLI -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 713 bytes
+stdout: 716 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -1514,22 +1514,22 @@ returncode: 0
stdout: 258 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 393
+size: 394
location: clients/tests/test-client.py:test_004()/34
cmd: $NMCLI dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 263 bytes
+stdout: 264 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
@@ -1544,40 +1544,40 @@ returncode: 0
stdout: 1272 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1420
+size: 1421
location: clients/tests/test-client.py:test_004()/36
cmd: $NMCLI -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1277 bytes
+stdout: 1278 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 8042
+size: 8039
location: clients/tests/test-client.py:test_004()/37
cmd: $NMCLI dev show
lang: C
returncode: 0
-stdout: 7918 bytes
+stdout: 7915 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -1605,7 +1605,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -1631,7 +1631,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -1712,18 +1712,18 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 8073
+size: 8071
location: clients/tests/test-client.py:test_004()/38
cmd: $NMCLI dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 7939 bytes
+stdout: 7937 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -1751,7 +1751,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -1777,7 +1777,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -1858,12 +1858,12 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 22425
+size: 22435
location: clients/tests/test-client.py:test_004()/39
cmd: $NMCLI -f all dev show
lang: C
returncode: 0
-stdout: 22293 bytes
+stdout: 22303 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -1876,13 +1876,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -1894,7 +1894,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -1984,7 +1984,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2002,7 +2002,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -2052,7 +2052,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2070,7 +2070,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -2127,7 +2127,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2223,7 +2223,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2282,12 +2282,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 22586
+size: 22598
location: clients/tests/test-client.py:test_004()/40
cmd: $NMCLI -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 22444 bytes
+stdout: 22456 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -2300,13 +2300,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2318,7 +2318,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -2408,7 +2408,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2426,7 +2426,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -2476,7 +2476,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2494,7 +2494,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -2551,7 +2551,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2647,7 +2647,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2706,18 +2706,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1493
+size: 1492
location: clients/tests/test-client.py:test_004()/41
cmd: $NMCLI dev show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -2750,7 +2750,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -2772,12 +2772,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5358
+size: 5360
location: clients/tests/test-client.py:test_004()/43
cmd: $NMCLI -f all dev show wlan0
lang: C
returncode: 0
-stdout: 5221 bytes
+stdout: 5223 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -2790,13 +2790,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -2808,7 +2808,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -2882,12 +2882,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5416
+size: 5420
location: clients/tests/test-client.py:test_004()/44
cmd: $NMCLI -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5269 bytes
+stdout: 5273 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -2900,13 +2900,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -2918,7 +2918,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -2992,12 +2992,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2166
+size: 2168
location: clients/tests/test-client.py:test_004()/45
cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3010,13 +3010,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -3041,12 +3041,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2192
+size: 2195
location: clients/tests/test-client.py:test_004()/46
cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3059,13 +3059,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -3090,12 +3090,12 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 2166
+size: 2168
location: clients/tests/test-client.py:test_004()/47
cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3108,13 +3108,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -3139,12 +3139,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2192
+size: 2195
location: clients/tests/test-client.py:test_004()/48
cmd: $NMCLI -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3157,13 +3157,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -3404,12 +3404,12 @@ AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1
<<<
-size: 5361
+size: 5363
location: clients/tests/test-client.py:test_004()/63
cmd: $NMCLI -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 5221 bytes
+stdout: 5223 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3422,13 +3422,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -3440,7 +3440,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -3514,12 +3514,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5419
+size: 5423
location: clients/tests/test-client.py:test_004()/64
cmd: $NMCLI -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5269 bytes
+stdout: 5273 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3532,13 +3532,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -3550,7 +3550,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -3624,18 +3624,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1506
+size: 1505
location: clients/tests/test-client.py:test_004()/65
cmd: $NMCLI -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -3668,7 +3668,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -3690,12 +3690,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5368
+size: 5370
location: clients/tests/test-client.py:test_004()/67
cmd: $NMCLI -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 5090 bytes
+stdout: 5092 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3708,13 +3708,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -3726,7 +3726,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
WIFI-PROPERTIES.WEP: yes
@@ -3797,12 +3797,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5425
+size: 5429
location: clients/tests/test-client.py:test_004()/68
cmd: $NMCLI -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5137 bytes
+stdout: 5141 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -3815,13 +3815,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -3833,7 +3833,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
WIFI-PROPERTIES.WEP: tak
@@ -4012,12 +4012,12 @@ connection.type: 802-11-wireless
connection.interface-name: --
<<<
-size: 5160
+size: 5163
location: clients/tests/test-client.py:test_004()/73
cmd: $NMCLI --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4106,7 +4106,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4126,12 +4126,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5190
+size: 5193
location: clients/tests/test-client.py:test_004()/74
cmd: $NMCLI --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4220,7 +4220,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4240,12 +4240,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5160
+size: 5163
location: clients/tests/test-client.py:test_004()/75
cmd: $NMCLI --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4334,7 +4334,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4354,12 +4354,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5190
+size: 5193
location: clients/tests/test-client.py:test_004()/76
cmd: $NMCLI --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -4448,7 +4448,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4684,17 +4684,17 @@ vpn.persistent: nie
vpn.timeout: 0
<<<
-size: 863
+size: 866
location: clients/tests/test-client.py:test_004()/81
cmd: $NMCLI --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 713 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -4706,17 +4706,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 876
+size: 879
location: clients/tests/test-client.py:test_004()/82
cmd: $NMCLI --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 713 bytes
+stdout: 716 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -4728,78 +4728,78 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 550
+size: 554
location: clients/tests/test-client.py:test_004()/83
cmd: $NMCLI --color yes dev s
lang: C
returncode: 0
-stdout: 418 bytes
+stdout: 422 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 565
+size: 570
location: clients/tests/test-client.py:test_004()/84
cmd: $NMCLI --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 423 bytes
+stdout: 428 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
wlan1 wifi niedostępne --
<<<
-size: 1777
+size: 1786
location: clients/tests/test-client.py:test_004()/85
cmd: $NMCLI --color yes -f all dev status
lang: C
returncode: 0
-stdout: 1632 bytes
+stdout: 1641 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1792
+size: 1802
location: clients/tests/test-client.py:test_004()/86
cmd: $NMCLI --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1637 bytes
+stdout: 1647 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 8054
+size: 8051
location: clients/tests/test-client.py:test_004()/87
cmd: $NMCLI --color yes dev show
lang: C
returncode: 0
-stdout: 7918 bytes
+stdout: 7915 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -4827,7 +4827,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -4853,7 +4853,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -4934,18 +4934,18 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 8085
+size: 8083
location: clients/tests/test-client.py:test_004()/88
cmd: $NMCLI --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 7939 bytes
+stdout: 7937 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -4973,7 +4973,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -4999,7 +4999,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -5080,12 +5080,12 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 22761
+size: 22771
location: clients/tests/test-client.py:test_004()/89
cmd: $NMCLI --color yes -f all dev show
lang: C
returncode: 0
-stdout: 22617 bytes
+stdout: 22627 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -5098,13 +5098,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5116,7 +5116,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -5206,7 +5206,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5224,7 +5224,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -5274,7 +5274,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5292,7 +5292,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -5349,7 +5349,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5445,7 +5445,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -5504,12 +5504,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 22922
+size: 22934
location: clients/tests/test-client.py:test_004()/90
cmd: $NMCLI --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 22768 bytes
+stdout: 22780 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -5522,13 +5522,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5540,7 +5540,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -5630,7 +5630,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5648,7 +5648,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -5698,7 +5698,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5716,7 +5716,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -5773,7 +5773,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5869,7 +5869,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -5928,18 +5928,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1505
+size: 1504
location: clients/tests/test-client.py:test_004()/91
cmd: $NMCLI --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -5972,7 +5972,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -5994,12 +5994,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5613
+size: 5615
location: clients/tests/test-client.py:test_004()/93
cmd: $NMCLI --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 5464 bytes
+stdout: 5466 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6012,13 +6012,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -6030,7 +6030,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -6104,12 +6104,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5671
+size: 5675
location: clients/tests/test-client.py:test_004()/94
cmd: $NMCLI --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5512 bytes
+stdout: 5516 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6122,13 +6122,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -6140,7 +6140,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -6214,12 +6214,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2178
+size: 2180
location: clients/tests/test-client.py:test_004()/95
cmd: $NMCLI --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6232,13 +6232,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -6263,12 +6263,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2204
+size: 2207
location: clients/tests/test-client.py:test_004()/96
cmd: $NMCLI --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6281,13 +6281,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -6312,12 +6312,12 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 2178
+size: 2180
location: clients/tests/test-client.py:test_004()/97
cmd: $NMCLI --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6330,13 +6330,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -6361,12 +6361,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2204
+size: 2207
location: clients/tests/test-client.py:test_004()/98
cmd: $NMCLI --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6379,13 +6379,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -6410,30 +6410,30 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 641
+size: 644
location: clients/tests/test-client.py:test_004()/99
cmd: $NMCLI --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 486 bytes
+stdout: 489 bytes
>>>
DEVICE TYPE DBUS-PATH
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
wlan1 wifi /org/freedesktop/NetworkManager/Devices/5
<<<
-size: 652
+size: 655
location: clients/tests/test-client.py:test_004()/100
cmd: $NMCLI --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 486 bytes
+stdout: 489 bytes
>>>
DEVICE TYPE DBUS-PATH
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
@@ -6626,12 +6626,12 @@ NAME SSID SSID-HEX BSSID MODE CHAN
<<<
-size: 5617
+size: 5619
location: clients/tests/test-client.py:test_004()/113
cmd: $NMCLI --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 5464 bytes
+stdout: 5466 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6644,13 +6644,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -6662,7 +6662,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -6736,12 +6736,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5675
+size: 5679
location: clients/tests/test-client.py:test_004()/114
cmd: $NMCLI --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5512 bytes
+stdout: 5516 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6754,13 +6754,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -6772,7 +6772,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -6846,18 +6846,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1519
+size: 1518
location: clients/tests/test-client.py:test_004()/115
cmd: $NMCLI --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -6890,7 +6890,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -6912,12 +6912,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5624
+size: 5626
location: clients/tests/test-client.py:test_004()/117
cmd: $NMCLI --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 5333 bytes
+stdout: 5335 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -6930,13 +6930,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -6948,7 +6948,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
WIFI-PROPERTIES.WEP: yes
@@ -7019,12 +7019,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5681
+size: 5685
location: clients/tests/test-client.py:test_004()/118
cmd: $NMCLI --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5380 bytes
+stdout: 5384 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -7037,13 +7037,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -7055,7 +7055,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
WIFI-PROPERTIES.WEP: tak
@@ -7234,12 +7234,12 @@ connection.type: 802-11-wireless
connection.interface-name: --
<<<
-size: 6170
+size: 6173
location: clients/tests/test-client.py:test_004()/123
cmd: $NMCLI --pretty con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -7339,7 +7339,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -7361,12 +7361,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6212
+size: 6215
location: clients/tests/test-client.py:test_004()/124
cmd: $NMCLI --pretty con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -7466,7 +7466,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -7488,12 +7488,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6170
+size: 6173
location: clients/tests/test-client.py:test_004()/125
cmd: $NMCLI --pretty con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -7593,7 +7593,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -7615,12 +7615,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6212
+size: 6215
location: clients/tests/test-client.py:test_004()/126
cmd: $NMCLI --pretty con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -7720,7 +7720,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -7982,12 +7982,12 @@ vpn.timeout: 0
-------------------------------------------------------------------------------
<<<
-size: 1175
+size: 1178
location: clients/tests/test-client.py:test_004()/131
cmd: $NMCLI --pretty -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 1023 bytes
+stdout: 1026 bytes
>>>
===============================================================================
Activate connection details (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -7995,7 +7995,7 @@ stdout: 1023 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -8008,12 +8008,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1195
+size: 1198
location: clients/tests/test-client.py:test_004()/132
cmd: $NMCLI --pretty -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1033 bytes
+stdout: 1036 bytes
>>>
===============================================================================
Szczegóły aktywowania połączenia (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -8021,7 +8021,7 @@ stdout: 1033 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -8046,26 +8046,26 @@ stdout: 387 bytes
=====================
DEVICE TYPE STATE CONNECTION
----------------------------------------------------------------
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 525
+size: 526
location: clients/tests/test-client.py:test_004()/134
cmd: $NMCLI --pretty dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 385 bytes
+stdout: 386 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE CONNECTION
--------------------------------------------------------------
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
@@ -8084,38 +8084,38 @@ stdout: 1570 bytes
=====================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1721
+size: 1722
location: clients/tests/test-client.py:test_004()/136
cmd: $NMCLI --pretty -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1568 bytes
+stdout: 1569 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 12868
+size: 12865
location: clients/tests/test-client.py:test_004()/137
cmd: $NMCLI --pretty dev show
lang: C
returncode: 0
-stdout: 12733 bytes
+stdout: 12730 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -8128,7 +8128,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -8171,7 +8171,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -8210,7 +8210,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -8318,12 +8318,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 12932
+size: 12930
location: clients/tests/test-client.py:test_004()/138
cmd: $NMCLI --pretty dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12787 bytes
+stdout: 12785 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -8336,7 +8336,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -8379,7 +8379,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -8418,7 +8418,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -8526,12 +8526,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 27410
+size: 27420
location: clients/tests/test-client.py:test_004()/139
cmd: $NMCLI --pretty -f all dev show
lang: C
returncode: 0
-stdout: 27268 bytes
+stdout: 27278 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -8547,13 +8547,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -8566,7 +8566,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -8670,7 +8670,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -8691,7 +8691,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -8750,7 +8750,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -8771,7 +8771,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -8837,7 +8837,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -8946,7 +8946,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -9014,12 +9014,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 27604
+size: 27616
location: clients/tests/test-client.py:test_004()/140
cmd: $NMCLI --pretty -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 27452 bytes
+stdout: 27464 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -9035,13 +9035,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9054,7 +9054,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -9158,7 +9158,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9179,7 +9179,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -9238,7 +9238,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9259,7 +9259,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -9325,7 +9325,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9434,7 +9434,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9502,12 +9502,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2434
+size: 2433
location: clients/tests/test-client.py:test_004()/141
cmd: $NMCLI --pretty dev show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -9520,7 +9520,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -9565,7 +9565,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -9592,12 +9592,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6539
+size: 6541
location: clients/tests/test-client.py:test_004()/143
cmd: $NMCLI --pretty -f all dev show wlan0
lang: C
returncode: 0
-stdout: 6392 bytes
+stdout: 6394 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -9613,13 +9613,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -9632,7 +9632,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -9717,12 +9717,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6604
+size: 6608
location: clients/tests/test-client.py:test_004()/144
cmd: $NMCLI --pretty -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6447 bytes
+stdout: 6451 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -9738,13 +9738,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9757,7 +9757,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -9842,12 +9842,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2627
+size: 2629
location: clients/tests/test-client.py:test_004()/145
cmd: $NMCLI --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -9863,13 +9863,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -9897,12 +9897,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2660
+size: 2663
location: clients/tests/test-client.py:test_004()/146
cmd: $NMCLI --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -9918,13 +9918,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -9952,12 +9952,12 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 2627
+size: 2629
location: clients/tests/test-client.py:test_004()/147
cmd: $NMCLI --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -9973,13 +9973,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -10007,12 +10007,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2660
+size: 2663
location: clients/tests/test-client.py:test_004()/148
cmd: $NMCLI --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -10028,13 +10028,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -10382,12 +10382,12 @@ AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1
<<<
-size: 6542
+size: 6544
location: clients/tests/test-client.py:test_004()/163
cmd: $NMCLI --pretty -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 6392 bytes
+stdout: 6394 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -10403,13 +10403,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -10422,7 +10422,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -10507,12 +10507,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6607
+size: 6611
location: clients/tests/test-client.py:test_004()/164
cmd: $NMCLI --pretty -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6447 bytes
+stdout: 6451 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -10528,13 +10528,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -10547,7 +10547,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -10632,12 +10632,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2447
+size: 2446
location: clients/tests/test-client.py:test_004()/165
cmd: $NMCLI --pretty -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -10650,7 +10650,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -10695,7 +10695,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -10722,12 +10722,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6469
+size: 6471
location: clients/tests/test-client.py:test_004()/167
cmd: $NMCLI --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 6181 bytes
+stdout: 6183 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -10743,13 +10743,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -10762,7 +10762,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -10843,12 +10843,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6533
+size: 6537
location: clients/tests/test-client.py:test_004()/168
cmd: $NMCLI --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6235 bytes
+stdout: 6239 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -10864,13 +10864,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -10883,7 +10883,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -11128,12 +11128,12 @@ connection.interface-name: --
-------------------------------------------------------------------------------
<<<
-size: 6182
+size: 6185
location: clients/tests/test-client.py:test_004()/173
cmd: $NMCLI --pretty --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -11233,7 +11233,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -11255,12 +11255,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6224
+size: 6227
location: clients/tests/test-client.py:test_004()/174
cmd: $NMCLI --pretty --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -11360,7 +11360,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11382,12 +11382,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6182
+size: 6185
location: clients/tests/test-client.py:test_004()/175
cmd: $NMCLI --pretty --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -11487,7 +11487,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -11509,12 +11509,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6224
+size: 6227
location: clients/tests/test-client.py:test_004()/176
cmd: $NMCLI --pretty --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -11614,7 +11614,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11876,12 +11876,12 @@ vpn.timeout: 0
-------------------------------------------------------------------------------
<<<
-size: 1187
+size: 1190
location: clients/tests/test-client.py:test_004()/181
cmd: $NMCLI --pretty --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 1023 bytes
+stdout: 1026 bytes
>>>
===============================================================================
Activate connection details (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -11889,7 +11889,7 @@ stdout: 1023 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -11902,12 +11902,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1207
+size: 1210
location: clients/tests/test-client.py:test_004()/182
cmd: $NMCLI --pretty --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1033 bytes
+stdout: 1036 bytes
>>>
===============================================================================
Szczegóły aktywowania połączenia (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -11915,7 +11915,7 @@ stdout: 1033 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -11928,88 +11928,88 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 689
+size: 693
location: clients/tests/test-client.py:test_004()/183
cmd: $NMCLI --pretty --color yes dev s
lang: C
returncode: 0
-stdout: 547 bytes
+stdout: 551 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE STATE CONNECTION
----------------------------------------------------------------
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 697
+size: 702
location: clients/tests/test-client.py:test_004()/184
cmd: $NMCLI --pretty --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 545 bytes
+stdout: 550 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE CONNECTION
--------------------------------------------------------------
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
wlan1 wifi niedostępne --
<<<
-size: 2085
+size: 2094
location: clients/tests/test-client.py:test_004()/185
cmd: $NMCLI --pretty --color yes -f all dev status
lang: C
returncode: 0
-stdout: 1930 bytes
+stdout: 1939 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 2093
+size: 2103
location: clients/tests/test-client.py:test_004()/186
cmd: $NMCLI --pretty --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1928 bytes
+stdout: 1938 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 12880
+size: 12877
location: clients/tests/test-client.py:test_004()/187
cmd: $NMCLI --pretty --color yes dev show
lang: C
returncode: 0
-stdout: 12733 bytes
+stdout: 12730 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -12022,7 +12022,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -12065,7 +12065,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -12104,7 +12104,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -12212,12 +12212,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 12944
+size: 12942
location: clients/tests/test-client.py:test_004()/188
cmd: $NMCLI --pretty --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12787 bytes
+stdout: 12785 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -12230,7 +12230,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -12273,7 +12273,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -12312,7 +12312,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -12420,12 +12420,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 27746
+size: 27756
location: clients/tests/test-client.py:test_004()/189
cmd: $NMCLI --pretty --color yes -f all dev show
lang: C
returncode: 0
-stdout: 27592 bytes
+stdout: 27602 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -12441,13 +12441,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -12460,7 +12460,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -12564,7 +12564,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -12585,7 +12585,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -12644,7 +12644,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -12665,7 +12665,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -12731,7 +12731,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -12840,7 +12840,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -12908,12 +12908,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 27940
+size: 27952
location: clients/tests/test-client.py:test_004()/190
cmd: $NMCLI --pretty --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 27776 bytes
+stdout: 27788 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -12929,13 +12929,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -12948,7 +12948,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -13052,7 +13052,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13073,7 +13073,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -13132,7 +13132,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13153,7 +13153,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -13219,7 +13219,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13328,7 +13328,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13396,12 +13396,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2446
+size: 2445
location: clients/tests/test-client.py:test_004()/191
cmd: $NMCLI --pretty --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -13414,7 +13414,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -13459,7 +13459,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -13486,12 +13486,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6794
+size: 6796
location: clients/tests/test-client.py:test_004()/193
cmd: $NMCLI --pretty --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 6635 bytes
+stdout: 6637 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -13507,13 +13507,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13526,7 +13526,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -13611,12 +13611,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6859
+size: 6863
location: clients/tests/test-client.py:test_004()/194
cmd: $NMCLI --pretty --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6690 bytes
+stdout: 6694 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -13632,13 +13632,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13651,7 +13651,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -13736,12 +13736,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2639
+size: 2641
location: clients/tests/test-client.py:test_004()/195
cmd: $NMCLI --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -13757,13 +13757,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13791,12 +13791,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2672
+size: 2675
location: clients/tests/test-client.py:test_004()/196
cmd: $NMCLI --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -13812,13 +13812,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13846,12 +13846,12 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 2639
+size: 2641
location: clients/tests/test-client.py:test_004()/197
cmd: $NMCLI --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -13867,13 +13867,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -13901,12 +13901,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2672
+size: 2675
location: clients/tests/test-client.py:test_004()/198
cmd: $NMCLI --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -13922,13 +13922,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -13956,38 +13956,38 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 798
+size: 801
location: clients/tests/test-client.py:test_004()/199
cmd: $NMCLI --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 633 bytes
+stdout: 636 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE DBUS-PATH
----------------------------------------------------------------------------------
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
wlan1 wifi /org/freedesktop/NetworkManager/Devices/5
<<<
-size: 801
+size: 804
location: clients/tests/test-client.py:test_004()/200
cmd: $NMCLI --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 626 bytes
+stdout: 629 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE DBUS-PATH
--------------------------------------------------------------------------------
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
@@ -14276,12 +14276,12 @@ NAME SSID SSID-HEX BSSID MODE CHAN
<<<
-size: 6797
+size: 6799
location: clients/tests/test-client.py:test_004()/213
cmd: $NMCLI --pretty --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 6635 bytes
+stdout: 6637 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -14297,13 +14297,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -14316,7 +14316,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -14401,12 +14401,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6862
+size: 6866
location: clients/tests/test-client.py:test_004()/214
cmd: $NMCLI --pretty --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6690 bytes
+stdout: 6694 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -14422,13 +14422,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -14441,7 +14441,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -14526,12 +14526,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2459
+size: 2458
location: clients/tests/test-client.py:test_004()/215
cmd: $NMCLI --pretty --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -14544,7 +14544,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -14589,7 +14589,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -14616,12 +14616,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6724
+size: 6726
location: clients/tests/test-client.py:test_004()/217
cmd: $NMCLI --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 6424 bytes
+stdout: 6426 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -14637,13 +14637,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -14656,7 +14656,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -14737,12 +14737,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6788
+size: 6792
location: clients/tests/test-client.py:test_004()/218
cmd: $NMCLI --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6478 bytes
+stdout: 6482 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -14758,13 +14758,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -14777,7 +14777,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -15022,12 +15022,12 @@ connection.interface-name: --
-------------------------------------------------------------------------------
<<<
-size: 2597
+size: 2602
location: clients/tests/test-client.py:test_004()/223
cmd: $NMCLI --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -15116,7 +15116,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15136,12 +15136,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2607
+size: 2612
location: clients/tests/test-client.py:test_004()/224
cmd: $NMCLI --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -15230,7 +15230,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15250,12 +15250,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2597
+size: 2602
location: clients/tests/test-client.py:test_004()/225
cmd: $NMCLI --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -15344,7 +15344,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15364,12 +15364,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2607
+size: 2612
location: clients/tests/test-client.py:test_004()/226
cmd: $NMCLI --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -15458,7 +15458,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15694,17 +15694,17 @@ vpn.persistent:no
vpn.timeout:0
<<<
-size: 538
+size: 543
location: clients/tests/test-client.py:test_004()/231
cmd: $NMCLI --terse -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15716,17 +15716,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 548
+size: 553
location: clients/tests/test-client.py:test_004()/232
cmd: $NMCLI --terse -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -15738,74 +15738,74 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 264
+size: 262
location: clients/tests/test-client.py:test_004()/233
cmd: $NMCLI --terse dev s
lang: C
returncode: 0
-stdout: 135 bytes
+stdout: 133 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 274
+size: 272
location: clients/tests/test-client.py:test_004()/234
cmd: $NMCLI --terse dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 135 bytes
+stdout: 133 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 662
+size: 660
location: clients/tests/test-client.py:test_004()/235
cmd: $NMCLI --terse -f all dev status
lang: C
returncode: 0
-stdout: 521 bytes
+stdout: 519 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 672
+size: 670
location: clients/tests/test-client.py:test_004()/236
cmd: $NMCLI --terse -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 521 bytes
+stdout: 519 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 4535
+size: 4532
location: clients/tests/test-client.py:test_004()/237
cmd: $NMCLI --terse dev show
lang: C
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -15833,7 +15833,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -15859,7 +15859,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -15940,18 +15940,18 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 4545
+size: 4542
location: clients/tests/test-client.py:test_004()/238
cmd: $NMCLI --terse dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -15979,7 +15979,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -16005,7 +16005,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -16086,12 +16086,12 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 12963
+size: 12983
location: clients/tests/test-client.py:test_004()/239
cmd: $NMCLI --terse -f all dev show
lang: C
returncode: 0
-stdout: 12822 bytes
+stdout: 12842 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -16104,13 +16104,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16122,7 +16122,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -16212,7 +16212,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16230,7 +16230,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -16280,7 +16280,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16298,7 +16298,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -16355,7 +16355,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16451,7 +16451,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16510,12 +16510,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 13009
+size: 13029
location: clients/tests/test-client.py:test_004()/240
cmd: $NMCLI --terse -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12858 bytes
+stdout: 12878 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -16528,13 +16528,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16546,7 +16546,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -16636,7 +16636,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16654,7 +16654,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -16704,7 +16704,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16722,7 +16722,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -16779,7 +16779,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16875,7 +16875,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -16934,18 +16934,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 877
+size: 876
location: clients/tests/test-client.py:test_004()/241
cmd: $NMCLI --terse dev show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -16967,18 +16967,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 887
+size: 886
location: clients/tests/test-client.py:test_004()/242
cmd: $NMCLI --terse dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -17000,12 +17000,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 2983
+size: 2987
location: clients/tests/test-client.py:test_004()/243
cmd: $NMCLI --terse -f all dev show wlan0
lang: C
returncode: 0
-stdout: 2837 bytes
+stdout: 2841 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17018,13 +17018,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17036,7 +17036,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -17110,12 +17110,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3020
+size: 3024
location: clients/tests/test-client.py:test_004()/244
cmd: $NMCLI --terse -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2864 bytes
+stdout: 2868 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17128,13 +17128,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17146,7 +17146,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -17220,12 +17220,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1312
+size: 1316
location: clients/tests/test-client.py:test_004()/245
cmd: $NMCLI --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17238,13 +17238,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17269,12 +17269,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1322
+size: 1326
location: clients/tests/test-client.py:test_004()/246
cmd: $NMCLI --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17287,13 +17287,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17318,12 +17318,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1312
+size: 1316
location: clients/tests/test-client.py:test_004()/247
cmd: $NMCLI --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17336,13 +17336,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17367,12 +17367,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1322
+size: 1326
location: clients/tests/test-client.py:test_004()/248
cmd: $NMCLI --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17385,13 +17385,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17606,12 +17606,12 @@ AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:24
<<<
-size: 2986
+size: 2990
location: clients/tests/test-client.py:test_004()/263
cmd: $NMCLI --terse -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 2837 bytes
+stdout: 2841 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17624,13 +17624,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17642,7 +17642,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -17716,12 +17716,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3023
+size: 3027
location: clients/tests/test-client.py:test_004()/264
cmd: $NMCLI --terse -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2864 bytes
+stdout: 2868 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17734,13 +17734,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17752,7 +17752,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -17826,18 +17826,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 890
+size: 889
location: clients/tests/test-client.py:test_004()/265
cmd: $NMCLI --terse -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -17859,18 +17859,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 900
+size: 899
location: clients/tests/test-client.py:test_004()/266
cmd: $NMCLI --terse -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -17892,12 +17892,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3045
+size: 3049
location: clients/tests/test-client.py:test_004()/267
cmd: $NMCLI --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 2758 bytes
+stdout: 2762 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -17910,13 +17910,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -17928,7 +17928,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -17999,12 +17999,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3082
+size: 3086
location: clients/tests/test-client.py:test_004()/268
cmd: $NMCLI --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2785 bytes
+stdout: 2789 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -18017,13 +18017,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -18035,7 +18035,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -18214,12 +18214,12 @@ connection.type:802-11-wireless
connection.interface-name:
<<<
-size: 2609
+size: 2614
location: clients/tests/test-client.py:test_004()/273
cmd: $NMCLI --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -18308,7 +18308,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18328,12 +18328,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2619
+size: 2624
location: clients/tests/test-client.py:test_004()/274
cmd: $NMCLI --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -18422,7 +18422,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18442,12 +18442,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2609
+size: 2614
location: clients/tests/test-client.py:test_004()/275
cmd: $NMCLI --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -18536,7 +18536,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18556,12 +18556,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2619
+size: 2624
location: clients/tests/test-client.py:test_004()/276
cmd: $NMCLI --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -18650,7 +18650,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18886,17 +18886,17 @@ vpn.persistent:no
vpn.timeout:0
<<<
-size: 550
+size: 555
location: clients/tests/test-client.py:test_004()/281
cmd: $NMCLI --terse --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18908,17 +18908,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 560
+size: 565
location: clients/tests/test-client.py:test_004()/282
cmd: $NMCLI --terse --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -18930,74 +18930,74 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 436
+size: 438
location: clients/tests/test-client.py:test_004()/283
cmd: $NMCLI --terse --color yes dev s
lang: C
returncode: 0
-stdout: 295 bytes
+stdout: 297 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 446
+size: 448
location: clients/tests/test-client.py:test_004()/284
cmd: $NMCLI --terse --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 295 bytes
+stdout: 297 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 1034
+size: 1041
location: clients/tests/test-client.py:test_004()/285
cmd: $NMCLI --terse --color yes -f all dev status
lang: C
returncode: 0
-stdout: 881 bytes
+stdout: 888 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 1044
+size: 1051
location: clients/tests/test-client.py:test_004()/286
cmd: $NMCLI --terse --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 881 bytes
+stdout: 888 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 4547
+size: 4544
location: clients/tests/test-client.py:test_004()/287
cmd: $NMCLI --terse --color yes dev show
lang: C
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -19025,7 +19025,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -19051,7 +19051,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -19132,18 +19132,18 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 4557
+size: 4554
location: clients/tests/test-client.py:test_004()/288
cmd: $NMCLI --terse --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -19171,7 +19171,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -19197,7 +19197,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -19278,12 +19278,12 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 13299
+size: 13319
location: clients/tests/test-client.py:test_004()/289
cmd: $NMCLI --terse --color yes -f all dev show
lang: C
returncode: 0
-stdout: 13146 bytes
+stdout: 13166 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -19296,13 +19296,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19314,7 +19314,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -19404,7 +19404,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19422,7 +19422,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -19472,7 +19472,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19490,7 +19490,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -19547,7 +19547,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19643,7 +19643,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19702,12 +19702,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 13345
+size: 13365
location: clients/tests/test-client.py:test_004()/290
cmd: $NMCLI --terse --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 13182 bytes
+stdout: 13202 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -19720,13 +19720,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19738,7 +19738,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -19828,7 +19828,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19846,7 +19846,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -19896,7 +19896,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -19914,7 +19914,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -19971,7 +19971,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20067,7 +20067,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20126,18 +20126,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 889
+size: 888
location: clients/tests/test-client.py:test_004()/291
cmd: $NMCLI --terse --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -20159,18 +20159,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 899
+size: 898
location: clients/tests/test-client.py:test_004()/292
cmd: $NMCLI --terse --color yes dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -20192,12 +20192,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3238
+size: 3242
location: clients/tests/test-client.py:test_004()/293
cmd: $NMCLI --terse --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 3080 bytes
+stdout: 3084 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20210,13 +20210,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20228,7 +20228,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -20302,12 +20302,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3275
+size: 3279
location: clients/tests/test-client.py:test_004()/294
cmd: $NMCLI --terse --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3107 bytes
+stdout: 3111 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20320,13 +20320,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20338,7 +20338,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -20412,12 +20412,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1324
+size: 1328
location: clients/tests/test-client.py:test_004()/295
cmd: $NMCLI --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20430,13 +20430,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20461,12 +20461,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1334
+size: 1338
location: clients/tests/test-client.py:test_004()/296
cmd: $NMCLI --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20479,13 +20479,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20510,12 +20510,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1324
+size: 1328
location: clients/tests/test-client.py:test_004()/297
cmd: $NMCLI --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20528,13 +20528,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20559,12 +20559,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1334
+size: 1338
location: clients/tests/test-client.py:test_004()/298
cmd: $NMCLI --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20577,13 +20577,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20608,28 +20608,28 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 555
+size: 558
location: clients/tests/test-client.py:test_004()/299
cmd: $NMCLI --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 391 bytes
+stdout: 394 bytes
>>>
-wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
+wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
eth0:ethernet:/org/freedesktop/NetworkManager/Devices/1
eth1:ethernet:/org/freedesktop/NetworkManager/Devices/2
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/4
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/5
<<<
-size: 565
+size: 568
location: clients/tests/test-client.py:test_004()/300
cmd: $NMCLI --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 391 bytes
+stdout: 394 bytes
>>>
-wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
+wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
eth0:ethernet:/org/freedesktop/NetworkManager/Devices/1
eth1:ethernet:/org/freedesktop/NetworkManager/Devices/2
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/4
@@ -20798,12 +20798,12 @@ stdout: 422 bytes
<<<
-size: 3241
+size: 3245
location: clients/tests/test-client.py:test_004()/313
cmd: $NMCLI --terse --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 3080 bytes
+stdout: 3084 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20816,13 +20816,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20834,7 +20834,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -20908,12 +20908,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3278
+size: 3282
location: clients/tests/test-client.py:test_004()/314
cmd: $NMCLI --terse --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3107 bytes
+stdout: 3111 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -20926,13 +20926,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -20944,7 +20944,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -21018,18 +21018,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 902
+size: 901
location: clients/tests/test-client.py:test_004()/315
cmd: $NMCLI --terse --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -21051,18 +21051,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 912
+size: 911
location: clients/tests/test-client.py:test_004()/316
cmd: $NMCLI --terse --color yes -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -21084,12 +21084,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3300
+size: 3304
location: clients/tests/test-client.py:test_004()/317
cmd: $NMCLI --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 3001 bytes
+stdout: 3005 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -21102,13 +21102,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -21120,7 +21120,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -21191,12 +21191,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3337
+size: 3341
location: clients/tests/test-client.py:test_004()/318
cmd: $NMCLI --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3028 bytes
+stdout: 3032 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -21209,13 +21209,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -21227,7 +21227,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -21429,7 +21429,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 - VPN connected key1 = val1 | key2 = val2 | key3 = val3
@@ -21458,7 +21458,7 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 — Połączono z VPN key1 = val1 | key2 = val2 | key3 = val3
@@ -21487,7 +21487,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 - VPN connected key1 = val1 | key2 = val2 | key3 = val3
@@ -21516,7 +21516,7 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 — Połączono z VPN key1 = val1 | key2 = val2 | key3 = val3
@@ -21600,7 +21600,7 @@ returncode: 0
stdout: 502 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 671
@@ -21611,7 +21611,7 @@ returncode: 0
stdout: 504 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 394
@@ -21622,22 +21622,22 @@ returncode: 0
stdout: 258 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 409
+size: 410
location: clients/tests/test-client.py:test_004()/334
cmd: $NMCLI --mode tabular dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 263 bytes
+stdout: 264 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
@@ -21652,34 +21652,34 @@ returncode: 0
stdout: 1272 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1436
+size: 1437
location: clients/tests/test-client.py:test_004()/336
cmd: $NMCLI --mode tabular -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1277 bytes
+stdout: 1278 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 6356
+size: 6354
location: clients/tests/test-client.py:test_004()/337
cmd: $NMCLI --mode tabular dev show
lang: C
returncode: 0
-stdout: 6216 bytes
+stdout: 6214 bytes
>>>
DEVICE
wlan0
@@ -21693,8 +21693,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -21730,7 +21730,7 @@ CON-PATH
--
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -21760,7 +21760,7 @@ CON-PATH
--
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -21823,12 +21823,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 6383
+size: 6378
location: clients/tests/test-client.py:test_004()/338
cmd: $NMCLI --mode tabular dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6233 bytes
+stdout: 6228 bytes
>>>
DEVICE
wlan0
@@ -21842,8 +21842,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -21878,8 +21878,8 @@ CONNECTION
CON-PATH
--
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -21908,8 +21908,8 @@ CONNECTION
CON-PATH
--
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -21972,18 +21972,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 15978
+size: 15976
location: clients/tests/test-client.py:test_004()/339
cmd: $NMCLI --mode tabular -f all dev show
lang: C
returncode: 0
-stdout: 15830 bytes
+stdout: 15828 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -22012,7 +22012,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -22021,7 +22021,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -22039,7 +22039,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- eth1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -22048,7 +22048,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -22066,7 +22066,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no unknown no no
@@ -22096,7 +22096,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no unknown no no
@@ -22125,18 +22125,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 16137
+size: 16132
location: clients/tests/test-client.py:test_004()/340
cmd: $NMCLI --mode tabular -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 15979 bytes
+stdout: 15974 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -22165,7 +22165,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -22173,8 +22173,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -22192,7 +22192,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- eth1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -22200,8 +22200,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -22219,7 +22219,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie nieznane nie nie
@@ -22249,7 +22249,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie nieznane nie nie
@@ -22278,12 +22278,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1125
+size: 1123
location: clients/tests/test-client.py:test_004()/341
cmd: $NMCLI --mode tabular dev show wlan0
lang: C
returncode: 0
-stdout: 980 bytes
+stdout: 978 bytes
>>>
DEVICE
wlan0
@@ -22297,8 +22297,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -22313,12 +22313,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1136
+size: 1135
location: clients/tests/test-client.py:test_004()/342
cmd: $NMCLI --mode tabular dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 981 bytes
+stdout: 980 bytes
>>>
DEVICE
wlan0
@@ -22332,8 +22332,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -22348,18 +22348,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 3296
+size: 3294
location: clients/tests/test-client.py:test_004()/343
cmd: $NMCLI --mode tabular -f all dev show wlan0
lang: C
returncode: 0
-stdout: 3143 bytes
+stdout: 3141 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -22388,18 +22388,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3359
+size: 3358
location: clients/tests/test-client.py:test_004()/344
cmd: $NMCLI --mode tabular -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3196 bytes
+stdout: 3195 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -22428,15 +22428,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1376
+size: 1374
location: clients/tests/test-client.py:test_004()/345
cmd: $NMCLI --mode tabular -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1188 bytes
+stdout: 1186 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
13:E0:74:85:7C:D9
@@ -22445,15 +22445,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 1403
+size: 1402
location: clients/tests/test-client.py:test_004()/346
cmd: $NMCLI --mode tabular -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1205 bytes
+stdout: 1204 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
13:E0:74:85:7C:D9
@@ -22462,15 +22462,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 1376
+size: 1374
location: clients/tests/test-client.py:test_004()/347
cmd: $NMCLI --mode tabular -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1188 bytes
+stdout: 1186 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
13:E0:74:85:7C:D9
@@ -22479,15 +22479,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 1403
+size: 1402
location: clients/tests/test-client.py:test_004()/348
cmd: $NMCLI --mode tabular -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1205 bytes
+stdout: 1204 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
13:E0:74:85:7C:D9
@@ -22712,18 +22712,18 @@ AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1
<<<
-size: 3299
+size: 3297
location: clients/tests/test-client.py:test_004()/363
cmd: $NMCLI --mode tabular -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 3143 bytes
+stdout: 3141 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -22752,18 +22752,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3362
+size: 3361
location: clients/tests/test-client.py:test_004()/364
cmd: $NMCLI --mode tabular -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3196 bytes
+stdout: 3195 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -22792,12 +22792,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1138
+size: 1136
location: clients/tests/test-client.py:test_004()/365
cmd: $NMCLI --mode tabular -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 980 bytes
+stdout: 978 bytes
>>>
DEVICE
wlan0
@@ -22811,8 +22811,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -22827,12 +22827,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1149
+size: 1148
location: clients/tests/test-client.py:test_004()/366
cmd: $NMCLI --mode tabular -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 981 bytes
+stdout: 980 bytes
>>>
DEVICE
wlan0
@@ -22846,8 +22846,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -22862,18 +22862,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 3354
+size: 3352
location: clients/tests/test-client.py:test_004()/367
cmd: $NMCLI --mode tabular -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 3060 bytes
+stdout: 3058 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
@@ -22899,18 +22899,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3417
+size: 3416
location: clients/tests/test-client.py:test_004()/368
cmd: $NMCLI --mode tabular -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3113 bytes
+stdout: 3112 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
@@ -23083,7 +23083,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 - VPN connected key1 = val1 | key2 = val2 | key3 = val3
@@ -23112,7 +23112,7 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 — Połączono z VPN key1 = val1 | key2 = val2 | key3 = val3
@@ -23141,7 +23141,7 @@ name method browser-only pac-url pac-script
proxy none no -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 - VPN connected key1 = val1 | key2 = val2 | key3 = val3
@@ -23170,7 +23170,7 @@ name method browser-only pac-url pac-script
proxy none nie -- --
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
VPN openvpn -- -- *** VPN connection con-vpn-1 *** 5 — Połączono z VPN key1 = val1 | key2 = val2 | key3 = val3
@@ -23254,7 +23254,7 @@ returncode: 0
stdout: 502 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 683
@@ -23265,75 +23265,75 @@ returncode: 0
stdout: 504 bytes
>>>
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
-size: 566
+size: 570
location: clients/tests/test-client.py:test_004()/383
cmd: $NMCLI --mode tabular --color yes dev s
lang: C
returncode: 0
-stdout: 418 bytes
+stdout: 422 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 581
+size: 586
location: clients/tests/test-client.py:test_004()/384
cmd: $NMCLI --mode tabular --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 423 bytes
+stdout: 428 bytes
>>>
DEVICE TYPE STATE CONNECTION
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
wlan1 wifi niedostępne --
<<<
-size: 1793
+size: 1802
location: clients/tests/test-client.py:test_004()/385
cmd: $NMCLI --mode tabular --color yes -f all dev status
lang: C
returncode: 0
-stdout: 1632 bytes
+stdout: 1641 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1808
+size: 1818
location: clients/tests/test-client.py:test_004()/386
cmd: $NMCLI --mode tabular --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1637 bytes
+stdout: 1647 bytes
>>>
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 6368
+size: 6366
location: clients/tests/test-client.py:test_004()/387
cmd: $NMCLI --mode tabular --color yes dev show
lang: C
returncode: 0
-stdout: 6216 bytes
+stdout: 6214 bytes
>>>
DEVICE
wlan0
@@ -23347,8 +23347,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -23384,7 +23384,7 @@ CON-PATH
--
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -23414,7 +23414,7 @@ CON-PATH
--
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -23477,12 +23477,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 6395
+size: 6390
location: clients/tests/test-client.py:test_004()/388
cmd: $NMCLI --mode tabular --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6233 bytes
+stdout: 6228 bytes
>>>
DEVICE
wlan0
@@ -23496,8 +23496,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -23532,8 +23532,8 @@ CONNECTION
CON-PATH
--
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -23562,8 +23562,8 @@ CONNECTION
CON-PATH
--
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -23626,18 +23626,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 16350
+size: 16348
location: clients/tests/test-client.py:test_004()/389
cmd: $NMCLI --mode tabular --color yes -f all dev show
lang: C
returncode: 0
-stdout: 16190 bytes
+stdout: 16188 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -23666,7 +23666,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -23675,7 +23675,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -23693,7 +23693,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- eth1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no 100 Mb/s no no
@@ -23702,7 +23702,7 @@ NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -23720,7 +23720,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no unknown no no
@@ -23750,7 +23750,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES no unknown no no
@@ -23779,18 +23779,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 16509
+size: 16504
location: clients/tests/test-client.py:test_004()/390
cmd: $NMCLI --mode tabular --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 16339 bytes
+stdout: 16334 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -23819,7 +23819,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -23827,8 +23827,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.49.34/22 | 192.168.135.86/19 -- -- 192.168.45.230 | 192.168.180.201 | 192.168.253.2 sear4.foo2.bar | sear4.foo1.bar 192.168.163.23 | 192.168.151.246
@@ -23846,7 +23846,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- eth1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie 100 Mb/s nie nie
@@ -23854,8 +23854,8 @@ CAPABILITIES nie 100 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
IP4 192.168.127.210/25 192.168.88.4 dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583 192.168.16.144 | 192.168.79.53 | 192.168.237.155 sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar 192.168.211.91 | 192.168.58.182 | 192.168.114.97
@@ -23873,7 +23873,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie nieznane nie nie
@@ -23903,7 +23903,7 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
CAPABILITIES nie nieznane nie nie
@@ -23932,12 +23932,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1137
+size: 1135
location: clients/tests/test-client.py:test_004()/391
cmd: $NMCLI --mode tabular --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 980 bytes
+stdout: 978 bytes
>>>
DEVICE
wlan0
@@ -23951,8 +23951,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -23967,12 +23967,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1148
+size: 1147
location: clients/tests/test-client.py:test_004()/392
cmd: $NMCLI --mode tabular --color yes dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 981 bytes
+stdout: 980 bytes
>>>
DEVICE
wlan0
@@ -23986,8 +23986,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -24002,18 +24002,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 3578
+size: 3576
location: clients/tests/test-client.py:test_004()/393
cmd: $NMCLI --mode tabular --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 3413 bytes
+stdout: 3411 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -24042,18 +24042,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3641
+size: 3640
location: clients/tests/test-client.py:test_004()/394
cmd: $NMCLI --mode tabular --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3466 bytes
+stdout: 3465 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -24082,15 +24082,15 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1388
+size: 1386
location: clients/tests/test-client.py:test_004()/395
cmd: $NMCLI --mode tabular --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1188 bytes
+stdout: 1186 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
13:E0:74:85:7C:D9
@@ -24099,15 +24099,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 1415
+size: 1414
location: clients/tests/test-client.py:test_004()/396
cmd: $NMCLI --mode tabular --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1205 bytes
+stdout: 1204 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
13:E0:74:85:7C:D9
@@ -24116,15 +24116,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 1388
+size: 1386
location: clients/tests/test-client.py:test_004()/397
cmd: $NMCLI --mode tabular --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1188 bytes
+stdout: 1186 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
13:E0:74:85:7C:D9
@@ -24133,15 +24133,15 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 1415
+size: 1414
location: clients/tests/test-client.py:test_004()/398
cmd: $NMCLI --mode tabular --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1205 bytes
+stdout: 1204 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
13:E0:74:85:7C:D9
@@ -24150,30 +24150,30 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 657
+size: 660
location: clients/tests/test-client.py:test_004()/399
cmd: $NMCLI --mode tabular --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 486 bytes
+stdout: 489 bytes
>>>
DEVICE TYPE DBUS-PATH
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
wlan1 wifi /org/freedesktop/NetworkManager/Devices/5
<<<
-size: 667
+size: 670
location: clients/tests/test-client.py:test_004()/400
cmd: $NMCLI --mode tabular --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 486 bytes
+stdout: 489 bytes
>>>
DEVICE TYPE DBUS-PATH
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
@@ -24366,18 +24366,18 @@ NAME SSID SSID-HEX BSSID MODE CHAN
<<<
-size: 3581
+size: 3579
location: clients/tests/test-client.py:test_004()/413
cmd: $NMCLI --mode tabular --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 3413 bytes
+stdout: 3411 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS yes yes no
@@ -24406,18 +24406,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3644
+size: 3643
location: clients/tests/test-client.py:test_004()/414
cmd: $NMCLI --mode tabular --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3466 bytes
+stdout: 3465 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
INTERFACE-FLAGS tak tak nie
@@ -24446,12 +24446,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1150
+size: 1148
location: clients/tests/test-client.py:test_004()/415
cmd: $NMCLI --mode tabular --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 980 bytes
+stdout: 978 bytes
>>>
DEVICE
wlan0
@@ -24465,8 +24465,8 @@ HWADDR
MTU
0
-STATE
-20 (unavailable)
+STATE
+100 (connected)
CONNECTION
con-vpn-1
@@ -24481,12 +24481,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1161
+size: 1160
location: clients/tests/test-client.py:test_004()/416
cmd: $NMCLI --mode tabular --color yes -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 981 bytes
+stdout: 980 bytes
>>>
DEVICE
wlan0
@@ -24500,8 +24500,8 @@ HWADDR
MTU
0
-STATE
-20 (niedostępne)
+STATE
+100 (połączono)
CONNECTION
con-vpn-1
@@ -24516,18 +24516,18 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 3636
+size: 3634
location: clients/tests/test-client.py:test_004()/417
cmd: $NMCLI --mode tabular --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 3330 bytes
+stdout: 3328 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
@@ -24553,18 +24553,18 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3699
+size: 3698
location: clients/tests/test-client.py:test_004()/418
cmd: $NMCLI --mode tabular --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3383 bytes
+stdout: 3382 bytes
>>>
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+CAPABILITIES nie 21 Mb/s nie nie
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
@@ -24749,7 +24749,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
--------------------------------------------------------------------------------------------------------------------------------
@@ -24791,7 +24791,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
----------------------------------------------------------------------------------------------------------------------------------
@@ -24833,7 +24833,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
--------------------------------------------------------------------------------------------------------------------------------
@@ -24875,7 +24875,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
----------------------------------------------------------------------------------------------------------------------------------
@@ -24988,7 +24988,7 @@ stdout: 965 bytes
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 1163
@@ -25003,7 +25003,7 @@ stdout: 987 bytes
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 532
@@ -25018,26 +25018,26 @@ stdout: 387 bytes
=====================
DEVICE TYPE STATE CONNECTION
----------------------------------------------------------------
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 540
+size: 541
location: clients/tests/test-client.py:test_004()/434
cmd: $NMCLI --mode tabular --pretty dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 385 bytes
+stdout: 386 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE CONNECTION
--------------------------------------------------------------
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
@@ -25056,38 +25056,38 @@ stdout: 1570 bytes
=====================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 1736
+size: 1737
location: clients/tests/test-client.py:test_004()/436
cmd: $NMCLI --mode tabular --pretty -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1568 bytes
+stdout: 1569 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 9886
+size: 9883
location: clients/tests/test-client.py:test_004()/437
cmd: $NMCLI --mode tabular --pretty dev show
lang: C
returncode: 0
-stdout: 9737 bytes
+stdout: 9734 bytes
>>>
==========================
Device details (wlan0)
@@ -25108,9 +25108,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -25161,7 +25161,7 @@ CON-PATH
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25204,7 +25204,7 @@ CON-PATH
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25293,12 +25293,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 10062
+size: 10054
location: clients/tests/test-client.py:test_004()/438
cmd: $NMCLI --mode tabular --pretty dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 9903 bytes
+stdout: 9895 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -25319,9 +25319,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -25370,9 +25370,9 @@ CON-PATH
----------
--
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25413,9 +25413,9 @@ CON-PATH
----------
--
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25504,23 +25504,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 24255
+size: 24252
location: clients/tests/test-client.py:test_004()/439
cmd: $NMCLI --mode tabular --pretty -f all dev show
lang: C
returncode: 0
-stdout: 24098 bytes
+stdout: 24095 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -25561,7 +25561,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
=========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25573,7 +25573,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25600,7 +25600,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
=========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- eth1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25612,7 +25612,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25639,7 +25639,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
==========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
@@ -25682,7 +25682,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
==========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
@@ -25720,23 +25720,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 24616
+size: 24607
location: clients/tests/test-client.py:test_004()/440
cmd: $NMCLI --mode tabular --pretty -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 24449 bytes
+stdout: 24440 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -25777,7 +25777,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
==================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25787,9 +25787,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25816,7 +25816,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
==================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- eth1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25826,9 +25826,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -25855,7 +25855,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
===================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25898,7 +25898,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
===================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -25936,12 +25936,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1709
+size: 1706
location: clients/tests/test-client.py:test_004()/441
cmd: $NMCLI --mode tabular --pretty dev show wlan0
lang: C
returncode: 0
-stdout: 1554 bytes
+stdout: 1551 bytes
>>>
==========================
Device details (wlan0)
@@ -25962,9 +25962,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -25983,12 +25983,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1749
+size: 1747
location: clients/tests/test-client.py:test_004()/442
cmd: $NMCLI --mode tabular --pretty dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1584 bytes
+stdout: 1582 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -26009,9 +26009,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -26030,23 +26030,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 4866
+size: 4863
location: clients/tests/test-client.py:test_004()/443
cmd: $NMCLI --mode tabular --pretty -f all dev show wlan0
lang: C
returncode: 0
-stdout: 4704 bytes
+stdout: 4701 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -26083,23 +26083,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 4974
+size: 4971
location: clients/tests/test-client.py:test_004()/444
cmd: $NMCLI --mode tabular --pretty -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4802 bytes
+stdout: 4799 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -26136,19 +26136,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2060
+size: 2057
location: clients/tests/test-client.py:test_004()/445
cmd: $NMCLI --mode tabular --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1863 bytes
+stdout: 1860 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
-------------------
@@ -26159,19 +26159,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 2124
+size: 2122
location: clients/tests/test-client.py:test_004()/446
cmd: $NMCLI --mode tabular --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1917 bytes
+stdout: 1915 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
-------------------
@@ -26182,19 +26182,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 2060
+size: 2057
location: clients/tests/test-client.py:test_004()/447
cmd: $NMCLI --mode tabular --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1863 bytes
+stdout: 1860 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
-------------------
@@ -26205,19 +26205,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 2124
+size: 2122
location: clients/tests/test-client.py:test_004()/448
cmd: $NMCLI --mode tabular --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1917 bytes
+stdout: 1915 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
-------------------
@@ -26548,23 +26548,23 @@ AP[1] wlan0-ap-2 776C616E302D61702D32 C0:E2:BE:E8:EF:B6 Infrastruktura 1
<<<
-size: 4869
+size: 4866
location: clients/tests/test-client.py:test_004()/463
cmd: $NMCLI --mode tabular --pretty -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 4704 bytes
+stdout: 4701 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -26601,23 +26601,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 4977
+size: 4974
location: clients/tests/test-client.py:test_004()/464
cmd: $NMCLI --mode tabular --pretty -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4802 bytes
+stdout: 4799 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -26654,12 +26654,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1722
+size: 1719
location: clients/tests/test-client.py:test_004()/465
cmd: $NMCLI --mode tabular --pretty -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1554 bytes
+stdout: 1551 bytes
>>>
==========================
Device details (wlan0)
@@ -26680,9 +26680,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -26701,12 +26701,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1762
+size: 1760
location: clients/tests/test-client.py:test_004()/466
cmd: $NMCLI --mode tabular --pretty -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1584 bytes
+stdout: 1582 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -26727,9 +26727,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -26748,23 +26748,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 4882
+size: 4879
location: clients/tests/test-client.py:test_004()/467
cmd: $NMCLI --mode tabular --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 4579 bytes
+stdout: 4576 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
-------------------------------------------------------------------------------------------
@@ -26797,23 +26797,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 4990
+size: 4987
location: clients/tests/test-client.py:test_004()/468
cmd: $NMCLI --mode tabular --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4677 bytes
+stdout: 4674 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
---------------------------------------------------------------------------------------------
@@ -27057,7 +27057,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
--------------------------------------------------------------------------------------------------------------------------------
@@ -27099,7 +27099,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
----------------------------------------------------------------------------------------------------------------------------------
@@ -27141,7 +27141,7 @@ proxy none no -- --
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
--------------------------------------------------------------------------------------------------------------------------------
@@ -27183,7 +27183,7 @@ proxy none nie -- --
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
NAME TYPE USERNAME GATEWAY BANNER VPN-STATE CFG
----------------------------------------------------------------------------------------------------------------------------------
@@ -27296,7 +27296,7 @@ stdout: 965 bytes
======================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 activated no no -- yes /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
size: 1175
@@ -27311,91 +27311,91 @@ stdout: 987 bytes
===========================================================================
GROUP NAME UUID DEVICES IP-IFACE STATE DEFAULT DEFAULT6 SPEC-OBJECT VPN DBUS-PATH CON-PATH ZONE MASTER-PATH
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 -- aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
+GENERAL con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP wlan0 wlan0 aktywowano nie nie -- tak /org/freedesktop/NetworkManager/ActiveConnection/2 /org/freedesktop/NetworkManager/Settings/Connection/3 -- --
<<<
-size: 704
+size: 708
location: clients/tests/test-client.py:test_004()/483
cmd: $NMCLI --mode tabular --pretty --color yes dev s
lang: C
returncode: 0
-stdout: 547 bytes
+stdout: 551 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE STATE CONNECTION
----------------------------------------------------------------
-wlan0 wifi unavailable con-vpn-1
+wlan0 wifi connected con-vpn-1
eth0 ethernet unavailable --
eth1 ethernet unavailable --
wlan1 wifi unavailable --
wlan1 wifi unavailable --
<<<
-size: 712
+size: 717
location: clients/tests/test-client.py:test_004()/484
cmd: $NMCLI --mode tabular --pretty --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 545 bytes
+stdout: 550 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE CONNECTION
--------------------------------------------------------------
-wlan0 wifi niedostępne con-vpn-1
+wlan0 wifi połączono con-vpn-1
eth0 ethernet niedostępne --
eth1 ethernet niedostępne --
wlan1 wifi niedostępne --
wlan1 wifi niedostępne --
<<<
-size: 2100
+size: 2109
location: clients/tests/test-client.py:test_004()/485
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev status
lang: C
returncode: 0
-stdout: 1930 bytes
+stdout: 1939 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi connected unknown unknown /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 2108
+size: 2118
location: clients/tests/test-client.py:test_004()/486
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1928 bytes
+stdout: 1938 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE STATE IP4-CONNECTIVITY IP6-CONNECTIVITY DBUS-PATH CONNECTION CON-UUID CON-PATH
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-wlan0 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0 wifi połączono nieznane nieznane /org/freedesktop/NetworkManager/Devices/3 con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2
eth0 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/1 -- -- --
eth1 ethernet niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/2 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/4 -- -- --
wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- --
<<<
-size: 9898
+size: 9895
location: clients/tests/test-client.py:test_004()/487
cmd: $NMCLI --mode tabular --pretty --color yes dev show
lang: C
returncode: 0
-stdout: 9737 bytes
+stdout: 9734 bytes
>>>
==========================
Device details (wlan0)
@@ -27416,9 +27416,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -27469,7 +27469,7 @@ CON-PATH
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27512,7 +27512,7 @@ CON-PATH
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27601,12 +27601,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 10074
+size: 10066
location: clients/tests/test-client.py:test_004()/488
cmd: $NMCLI --mode tabular --pretty --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 9903 bytes
+stdout: 9895 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -27627,9 +27627,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -27678,9 +27678,9 @@ CON-PATH
----------
--
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27721,9 +27721,9 @@ CON-PATH
----------
--
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27812,23 +27812,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 2001:a::88ca:3654:96b:ab44/89 -- dst = 2001:a::cc8b:7c09:4673:bbb0/85, nh = ::, mt = 2821465568 | dst = 2001:a::a976:2488:f49f:b48/106, nh = 2001:a::62ae:c734:fc7b:e931, mt = 2248613879 | dst = 2001:a::afb7:4449:3787:8bb4/123, nh = :: 2001:a::2934:bd66:550d:ec19 sear6.fo.x.y
<<<
-size: 24627
+size: 24624
location: clients/tests/test-client.py:test_004()/489
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show
lang: C
returncode: 0
-stdout: 24458 bytes
+stdout: 24455 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -27869,7 +27869,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
=========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth0 -- eth0 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -27881,7 +27881,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27908,7 +27908,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
=========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/eth1 -- eth1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -27920,7 +27920,7 @@ INTERFACE-FLAGS yes yes no
NAME CARRIER S390-SUBCHANNELS
---------------------------------------------
-WIRED-PROPERTIES off --
+WIRED-PROPERTIES on --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -27947,7 +27947,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
==========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
@@ -27990,7 +27990,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
==========================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- -- no yes yes no no -- -- -- -- unknown
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan1 -- wlan1 no yes yes no no -- -- -- -- unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
@@ -28028,23 +28028,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 24988
+size: 24979
location: clients/tests/test-client.py:test_004()/490
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 24809 bytes
+stdout: 24800 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -28085,7 +28085,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
==================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth0 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/1 -- -- virtual -- -- AB:B7:BF:E2:48:E8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth0 -- eth0 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -28095,9 +28095,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28124,7 +28124,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
==================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL eth1 ethernet NMDeviceEthernet /org/freedesktop/NetworkManager/Devices/2 -- -- virtual -- -- E7:78:B1:93:2B:22 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/eth1 -- eth1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -28134,9 +28134,9 @@ NAME UP LOWER-UP CARRIER
-----------------------------------------
INTERFACE-FLAGS tak tak nie
-NAME CARRIER S390-SUBCHANNELS
------------------------------------------------
-WIRED-PROPERTIES wyłączone --
+NAME CARRIER S390-SUBCHANNELS
+----------------------------------------------
+WIRED-PROPERTIES włączone --
GROUP ADDRESS GATEWAY ROUTE DNS DOMAIN WINS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -28163,7 +28163,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{1} 5fcfd6d7-1
===================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/4 -- -- virtual -- -- 21:E9:64:81:8C:A8 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -28206,7 +28206,7 @@ CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-x
===================================
NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- -- nie tak tak nie nie -- -- -- -- nieznane
+GENERAL wlan1 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/5 -- -- virtual -- -- 71:52:AD:63:5C:7C 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan1 -- wlan1 nie tak tak nie nie -- -- -- -- nieznane
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
------------------------------------------------------------
@@ -28244,12 +28244,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1721
+size: 1718
location: clients/tests/test-client.py:test_004()/491
cmd: $NMCLI --mode tabular --pretty --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 1554 bytes
+stdout: 1551 bytes
>>>
==========================
Device details (wlan0)
@@ -28270,9 +28270,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -28291,12 +28291,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1761
+size: 1759
location: clients/tests/test-client.py:test_004()/492
cmd: $NMCLI --mode tabular --pretty --color yes dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1584 bytes
+stdout: 1582 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -28317,9 +28317,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -28338,23 +28338,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 5148
+size: 5145
location: clients/tests/test-client.py:test_004()/493
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 4974 bytes
+stdout: 4971 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -28391,23 +28391,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5256
+size: 5253
location: clients/tests/test-client.py:test_004()/494
cmd: $NMCLI --mode tabular --pretty --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5072 bytes
+stdout: 5069 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -28444,19 +28444,19 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2072
+size: 2069
location: clients/tests/test-client.py:test_004()/495
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1863 bytes
+stdout: 1860 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
-------------------
@@ -28467,19 +28467,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 2136
+size: 2134
location: clients/tests/test-client.py:test_004()/496
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1917 bytes
+stdout: 1915 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
-------------------
@@ -28490,19 +28490,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 2072
+size: 2069
location: clients/tests/test-client.py:test_004()/497
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1863 bytes
+stdout: 1860 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
HWADDR
-------------------
@@ -28513,19 +28513,19 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH
WIFI-PROPERTIES yes yes yes yes yes yes yes unknown unknown no no
<<<
-size: 2136
+size: 2134
location: clients/tests/test-client.py:test_004()/498
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1917 bytes
+stdout: 1915 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
HWADDR
-------------------
@@ -28536,38 +28536,38 @@ NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MES
WIFI-PROPERTIES tak tak tak tak tak tak tak nieznane nieznane nie nie
<<<
-size: 813
+size: 816
location: clients/tests/test-client.py:test_004()/499
cmd: $NMCLI --mode tabular --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 633 bytes
+stdout: 636 bytes
>>>
=====================
Status of devices
=====================
DEVICE TYPE DBUS-PATH
----------------------------------------------------------------------------------
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
wlan1 wifi /org/freedesktop/NetworkManager/Devices/5
<<<
-size: 816
+size: 819
location: clients/tests/test-client.py:test_004()/500
cmd: $NMCLI --mode tabular --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 626 bytes
+stdout: 629 bytes
>>>
===================
Stan urzÄ…dzenia
===================
DEVICE TYPE DBUS-PATH
--------------------------------------------------------------------------------
-wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
+wlan0 wifi /org/freedesktop/NetworkManager/Devices/3
eth0 ethernet /org/freedesktop/NetworkManager/Devices/1
eth1 ethernet /org/freedesktop/NetworkManager/Devices/2
wlan1 wifi /org/freedesktop/NetworkManager/Devices/4
@@ -28856,23 +28856,23 @@ NAME SSID SSID-HEX BSSID MODE CHAN
<<<
-size: 5151
+size: 5148
location: clients/tests/test-client.py:test_004()/513
cmd: $NMCLI --mode tabular --pretty --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 4974 bytes
+stdout: 4971 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -28909,23 +28909,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5259
+size: 5256
location: clients/tests/test-client.py:test_004()/514
cmd: $NMCLI --mode tabular --pretty --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5072 bytes
+stdout: 5069 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME UP LOWER-UP CARRIER
-----------------------------------------
@@ -28962,12 +28962,12 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1734
+size: 1731
location: clients/tests/test-client.py:test_004()/515
cmd: $NMCLI --mode tabular --pretty --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1554 bytes
+stdout: 1551 bytes
>>>
==========================
Device details (wlan0)
@@ -28988,9 +28988,9 @@ MTU
-----
0
-STATE
-------------------
-20 (unavailable)
+STATE
+-----------------
+100 (connected)
CONNECTION
------------
@@ -29009,12 +29009,12 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1774
+size: 1772
location: clients/tests/test-client.py:test_004()/516
cmd: $NMCLI --mode tabular --pretty --color yes -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1584 bytes
+stdout: 1582 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
@@ -29035,9 +29035,9 @@ MTU
-----
0
-STATE
-------------------
-20 (niedostępne)
+STATE
+-----------------
+100 (połączono)
CONNECTION
------------
@@ -29056,23 +29056,23 @@ GROUP ADDRESS GATEWAY ROUTE
IP6 -- -- dst = 2001:a::dd5b:aa7b:b4a2:e42/102, nh = ::, mt = 2504159086 -- sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 5164
+size: 5161
location: clients/tests/test-client.py:test_004()/517
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 4849 bytes
+stdout: 4846 bytes
>>>
==========================
Device details (wlan0)
==========================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (unavailable) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- -- no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (connected) 0 (No reason given) 0 (unknown) 0 (unknown) /sys/devices/virtual/wlan0 -- wlan0 no yes yes no no -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 unknown
NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-----------------------------------------------------------
-CAPABILITIES no unknown no no
+CAPABILITIES no 21 Mb/s no no
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
-------------------------------------------------------------------------------------------
@@ -29105,23 +29105,23 @@ NAME AVAILABLE-CONNECTION-PATHS AVAILABLE-
CONNECTIONS /org/freedesktop/NetworkManager/Settings/Connection/{2} UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5272
+size: 5269
location: clients/tests/test-client.py:test_004()/518
cmd: $NMCLI --mode tabular --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4947 bytes
+stdout: 4944 bytes
>>>
===================================
Informacje o urządzeniu (wlan0)
===================================
-NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 20 (niedostępne) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- -- nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
+NAME DEVICE TYPE NM-TYPE DBUS-PATH VENDOR PRODUCT DRIVER DRIVER-VERSION FIRMWARE-VERSION HWADDR MTU STATE REASON IP4-CONNECTIVITY IP6-CONNECTIVITY UDI PATH IP-IFACE IS-SOFTWARE NM-MANAGED AUTOCONNECT FIRMWARE-MISSING NM-PLUGIN-MISSING PHYS-PORT-ID CONNECTION CON-UUID CON-PATH METERED
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+GENERAL wlan0 wifi NMDeviceWifi /org/freedesktop/NetworkManager/Devices/3 -- -- virtual -- -- 13:E0:74:85:7C:D9 0 100 (połączono) 0 (Nie podano przyczyny) 0 (nieznane) 0 (nieznane) /sys/devices/virtual/wlan0 -- wlan0 nie tak tak nie nie -- con-vpn-1 UUID-con-vpn-1-REPLACED-REPLACED-REP /org/freedesktop/NetworkManager/ActiveConnection/2 nieznane
-NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
-------------------------------------------------------------
-CAPABILITIES nie nieznane nie nie
+NAME CARRIER-DETECT SPEED IS-SOFTWARE SRIOV
+-----------------------------------------------------------
+CAPABILITIES nie 21 Mb/s nie nie
NAME WEP WPA WPA2 TKIP CCMP AP ADHOC 2GHZ 5GHZ MESH IBSS-RSN
---------------------------------------------------------------------------------------------
@@ -29330,67 +29330,67 @@ interface-name
<<<
-size: 806
+size: 811
location: clients/tests/test-client.py:test_004()/523
cmd: $NMCLI --mode tabular --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 816
+size: 821
location: clients/tests/test-client.py:test_004()/524
cmd: $NMCLI --mode tabular --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 806
+size: 811
location: clients/tests/test-client.py:test_004()/525
cmd: $NMCLI --mode tabular --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 816
+size: 821
location: clients/tests/test-client.py:test_004()/526
cmd: $NMCLI --mode tabular --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
@@ -29442,94 +29442,94 @@ stdout: 96 bytes
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
<<<
-size: 355
+size: 360
location: clients/tests/test-client.py:test_004()/531
cmd: $NMCLI --mode tabular --terse -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 190 bytes
+stdout: 195 bytes
>>>
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
<<<
-size: 365
+size: 370
location: clients/tests/test-client.py:test_004()/532
cmd: $NMCLI --mode tabular --terse -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 190 bytes
+stdout: 195 bytes
>>>
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
<<<
-size: 279
+size: 277
location: clients/tests/test-client.py:test_004()/533
cmd: $NMCLI --mode tabular --terse dev s
lang: C
returncode: 0
-stdout: 135 bytes
+stdout: 133 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 289
+size: 287
location: clients/tests/test-client.py:test_004()/534
cmd: $NMCLI --mode tabular --terse dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 135 bytes
+stdout: 133 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 677
+size: 675
location: clients/tests/test-client.py:test_004()/535
cmd: $NMCLI --mode tabular --terse -f all dev status
lang: C
returncode: 0
-stdout: 521 bytes
+stdout: 519 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 687
+size: 685
location: clients/tests/test-client.py:test_004()/536
cmd: $NMCLI --mode tabular --terse -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 521 bytes
+stdout: 519 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 3091
+size: 3088
location: clients/tests/test-client.py:test_004()/537
cmd: $NMCLI --mode tabular --terse dev show
lang: C
returncode: 0
-stdout: 2943 bytes
+stdout: 2940 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
@@ -29542,7 +29542,7 @@ AB\:B7\:BF\:E2\:48\:E8
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
@@ -29553,7 +29553,7 @@ E7\:78\:B1\:93\:2B\:22
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
@@ -29578,18 +29578,18 @@ IP4:192.168.97.124/29 | 192.168.76.154/18::dst = 192.168.33.233/22, nh = 192.168
IP6:2001\:a\:\:88ca\:3654\:96b\:ab44/89::dst = 2001\:a\:\:cc8b\:7c09\:4673\:bbb0/85, nh = \:\:, mt = 2821465568 | dst = 2001\:a\:\:a976\:2488\:f49f\:b48/106, nh = 2001\:a\:\:62ae\:c734\:fc7b\:e931, mt = 2248613879 | dst = 2001\:a\:\:afb7\:4449\:3787\:8bb4/123, nh = \:\::2001\:a\:\:2934\:bd66\:550d\:ec19:sear6.fo.x.y
<<<
-size: 3101
+size: 3098
location: clients/tests/test-client.py:test_004()/538
cmd: $NMCLI --mode tabular --terse dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2943 bytes
+stdout: 2940 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
@@ -29602,7 +29602,7 @@ AB\:B7\:BF\:E2\:48\:E8
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
@@ -29613,7 +29613,7 @@ E7\:78\:B1\:93\:2B\:22
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
@@ -29638,15 +29638,15 @@ IP4:192.168.97.124/29 | 192.168.76.154/18::dst = 192.168.33.233/22, nh = 192.168
IP6:2001\:a\:\:88ca\:3654\:96b\:ab44/89::dst = 2001\:a\:\:cc8b\:7c09\:4673\:bbb0/85, nh = \:\:, mt = 2821465568 | dst = 2001\:a\:\:a976\:2488\:f49f\:b48/106, nh = 2001\:a\:\:62ae\:c734\:fc7b\:e931, mt = 2248613879 | dst = 2001\:a\:\:afb7\:4449\:3787\:8bb4/123, nh = \:\::2001\:a\:\:2934\:bd66\:550d\:ec19:sear6.fo.x.y
<<<
-size: 6770
+size: 6790
location: clients/tests/test-client.py:test_004()/539
cmd: $NMCLI --mode tabular --terse -f all dev show
lang: C
returncode: 0
-stdout: 6615 bytes
+stdout: 6635 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -29658,27 +29658,27 @@ IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::se
DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no:::::unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
DHCP4:dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1:::no:yes:yes:no:no:::::unknown
+GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1::eth1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-1 = val-1 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-3 = val-3 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-5 = val-5 | dhcp-4-opt-7 = val-7 | dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -29689,7 +29689,7 @@ IP6:2001\:a\:\:fa05\:2ab4\:9300\:e8fe/116 | 2001\:a\:\:e9cf\:bd3\:caba\:99b3/86
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -29700,15 +29700,15 @@ DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 6816
+size: 6836
location: clients/tests/test-client.py:test_004()/540
cmd: $NMCLI --mode tabular --terse -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6651 bytes
+stdout: 6671 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -29720,27 +29720,27 @@ IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::se
DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no:::::unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
DHCP4:dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1:::no:yes:yes:no:no:::::unknown
+GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1::eth1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-1 = val-1 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-3 = val-3 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-5 = val-5 | dhcp-4-opt-7 = val-7 | dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -29751,7 +29751,7 @@ IP6:2001\:a\:\:fa05\:2ab4\:9300\:e8fe/116 | 2001\:a\:\:e9cf\:bd3\:caba\:99b3/86
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -29762,51 +29762,51 @@ DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 599
+size: 598
location: clients/tests/test-client.py:test_004()/541
cmd: $NMCLI --mode tabular --terse dev show wlan0
lang: C
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 609
+size: 608
location: clients/tests/test-client.py:test_004()/542
cmd: $NMCLI --mode tabular --terse dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1495
+size: 1499
location: clients/tests/test-client.py:test_004()/543
cmd: $NMCLI --mode tabular --terse -f all dev show wlan0
lang: C
returncode: 0
-stdout: 1334 bytes
+stdout: 1338 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -29819,15 +29819,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1532
+size: 1536
location: clients/tests/test-client.py:test_004()/544
cmd: $NMCLI --mode tabular --terse -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1361 bytes
+stdout: 1365 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -29840,50 +29840,50 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 609
+size: 613
location: clients/tests/test-client.py:test_004()/545
cmd: $NMCLI --mode tabular --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 619
+size: 623
location: clients/tests/test-client.py:test_004()/546
cmd: $NMCLI --mode tabular --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 609
+size: 613
location: clients/tests/test-client.py:test_004()/547
cmd: $NMCLI --mode tabular --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 619
+size: 623
location: clients/tests/test-client.py:test_004()/548
cmd: $NMCLI --mode tabular --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -30078,15 +30078,15 @@ AP[1]:wlan0-ap-2:776C616E302D61702D32:C0\:E2\:BE\:E8\:EF\:B6:Infrastruktura:1:24
<<<
-size: 1498
+size: 1502
location: clients/tests/test-client.py:test_004()/563
cmd: $NMCLI --mode tabular --terse -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 1334 bytes
+stdout: 1338 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -30099,15 +30099,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1535
+size: 1539
location: clients/tests/test-client.py:test_004()/564
cmd: $NMCLI --mode tabular --terse -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1361 bytes
+stdout: 1365 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -30120,51 +30120,51 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 612
+size: 611
location: clients/tests/test-client.py:test_004()/565
cmd: $NMCLI --mode tabular --terse -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 622
+size: 621
location: clients/tests/test-client.py:test_004()/566
cmd: $NMCLI --mode tabular --terse -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1609
+size: 1613
location: clients/tests/test-client.py:test_004()/567
cmd: $NMCLI --mode tabular --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 1307 bytes
+stdout: 1311 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
AP[2]: :61\:95\:77\:AC\:1E\:4C:wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1
@@ -30176,15 +30176,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1646
+size: 1650
location: clients/tests/test-client.py:test_004()/568
cmd: $NMCLI --mode tabular --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1334 bytes
+stdout: 1338 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
AP[2]: :61\:95\:77\:AC\:1E\:4C:wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1
@@ -30268,67 +30268,67 @@ UUID-con-xx1-REPLACED-REPLACED-REPLA
<<<
-size: 818
+size: 823
location: clients/tests/test-client.py:test_004()/573
cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 828
+size: 833
location: clients/tests/test-client.py:test_004()/574
cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 818
+size: 823
location: clients/tests/test-client.py:test_004()/575
cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
-size: 828
+size: 833
location: clients/tests/test-client.py:test_004()/576
cmd: $NMCLI --mode tabular --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 652 bytes
+stdout: 657 bytes
>>>
connection:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP::vpn::yes:0:-1:0:-1:0:no:::::-1::0:unknown:default:-1:-1:-1
ipv4:auto::::0::::-1:0::no:no:::0:yes:::0x0:no:yes:-1::
ipv6:auto::::0::::-1:0::no:no:no:yes:-1:stable-privacy:0:::0:yes::0x0:
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
proxy:none:no::
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
VPN:openvpn:::*** VPN connection con-vpn-1 ***:5 - VPN connected:key1 = val1 | key2 = val2 | key3 = val3
<<<
@@ -30380,94 +30380,94 @@ stdout: 96 bytes
vpn:org.freedesktop.NetworkManager.openvpn::key1 = val1, key2 = val2, key3 = val3:<hidden>:no:0
<<<
-size: 367
+size: 372
location: clients/tests/test-client.py:test_004()/581
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 190 bytes
+stdout: 195 bytes
>>>
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
<<<
-size: 377
+size: 382
location: clients/tests/test-client.py:test_004()/582
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 190 bytes
+stdout: 195 bytes
>>>
-GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0::activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
+GENERAL:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:wlan0:wlan0:activated:no:no::yes:/org/freedesktop/NetworkManager/ActiveConnection/2:/org/freedesktop/NetworkManager/Settings/Connection/3::
<<<
-size: 451
+size: 453
location: clients/tests/test-client.py:test_004()/583
cmd: $NMCLI --mode tabular --terse --color yes dev s
lang: C
returncode: 0
-stdout: 295 bytes
+stdout: 297 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 461
+size: 463
location: clients/tests/test-client.py:test_004()/584
cmd: $NMCLI --mode tabular --terse --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 295 bytes
+stdout: 297 bytes
>>>
-wlan0:wifi:unavailable:con-vpn-1
+wlan0:wifi:connected:con-vpn-1
eth0:ethernet:unavailable:
eth1:ethernet:unavailable:
wlan1:wifi:unavailable:
wlan1:wifi:unavailable:
<<<
-size: 1049
+size: 1056
location: clients/tests/test-client.py:test_004()/585
cmd: $NMCLI --mode tabular --terse --color yes -f all dev status
lang: C
returncode: 0
-stdout: 881 bytes
+stdout: 888 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 1059
+size: 1066
location: clients/tests/test-client.py:test_004()/586
cmd: $NMCLI --mode tabular --terse --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 881 bytes
+stdout: 888 bytes
>>>
-wlan0:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
+wlan0:wifi:connected:unknown:unknown:/org/freedesktop/NetworkManager/Devices/3:con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2
eth0:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/1:::
eth1:ethernet:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/2:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/4:::
wlan1:wifi:unavailable:unknown:unknown:/org/freedesktop/NetworkManager/Devices/5:::
<<<
-size: 3103
+size: 3100
location: clients/tests/test-client.py:test_004()/587
cmd: $NMCLI --mode tabular --terse --color yes dev show
lang: C
returncode: 0
-stdout: 2943 bytes
+stdout: 2940 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
@@ -30480,7 +30480,7 @@ AB\:B7\:BF\:E2\:48\:E8
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
@@ -30491,7 +30491,7 @@ E7\:78\:B1\:93\:2B\:22
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
@@ -30516,18 +30516,18 @@ IP4:192.168.97.124/29 | 192.168.76.154/18::dst = 192.168.33.233/22, nh = 192.168
IP6:2001\:a\:\:88ca\:3654\:96b\:ab44/89::dst = 2001\:a\:\:cc8b\:7c09\:4673\:bbb0/85, nh = \:\:, mt = 2821465568 | dst = 2001\:a\:\:a976\:2488\:f49f\:b48/106, nh = 2001\:a\:\:62ae\:c734\:fc7b\:e931, mt = 2248613879 | dst = 2001\:a\:\:afb7\:4449\:3787\:8bb4/123, nh = \:\::2001\:a\:\:2934\:bd66\:550d\:ec19:sear6.fo.x.y
<<<
-size: 3113
+size: 3110
location: clients/tests/test-client.py:test_004()/588
cmd: $NMCLI --mode tabular --terse --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2943 bytes
+stdout: 2940 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
@@ -30540,7 +30540,7 @@ AB\:B7\:BF\:E2\:48\:E8
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
@@ -30551,7 +30551,7 @@ E7\:78\:B1\:93\:2B\:22
20 (unavailable)
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
@@ -30576,15 +30576,15 @@ IP4:192.168.97.124/29 | 192.168.76.154/18::dst = 192.168.33.233/22, nh = 192.168
IP6:2001\:a\:\:88ca\:3654\:96b\:ab44/89::dst = 2001\:a\:\:cc8b\:7c09\:4673\:bbb0/85, nh = \:\:, mt = 2821465568 | dst = 2001\:a\:\:a976\:2488\:f49f\:b48/106, nh = 2001\:a\:\:62ae\:c734\:fc7b\:e931, mt = 2248613879 | dst = 2001\:a\:\:afb7\:4449\:3787\:8bb4/123, nh = \:\::2001\:a\:\:2934\:bd66\:550d\:ec19:sear6.fo.x.y
<<<
-size: 7142
+size: 7162
location: clients/tests/test-client.py:test_004()/589
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show
lang: C
returncode: 0
-stdout: 6975 bytes
+stdout: 6995 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -30596,27 +30596,27 @@ IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::se
DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no:::::unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
DHCP4:dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1:::no:yes:yes:no:no:::::unknown
+GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1::eth1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-1 = val-1 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-3 = val-3 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-5 = val-5 | dhcp-4-opt-7 = val-7 | dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -30627,7 +30627,7 @@ IP6:2001\:a\:\:fa05\:2ab4\:9300\:e8fe/116 | 2001\:a\:\:e9cf\:bd3\:caba\:99b3/86
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -30638,15 +30638,15 @@ DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 7188
+size: 7208
location: clients/tests/test-client.py:test_004()/590
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 7011 bytes
+stdout: 7031 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -30658,27 +30658,27 @@ IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::se
DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0:::no:yes:yes:no:no:::::unknown
+GENERAL:eth0:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/1:::virtual:::AB\:B7\:BF\:E2\:48\:E8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth0::eth0:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.49.34/22 | 192.168.135.86/19:::192.168.45.230 | 192.168.180.201 | 192.168.253.2:sear4.foo2.bar | sear4.foo1.bar:192.168.163.23 | 192.168.151.246
DHCP4:dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:ed81\:3d7\:c2e9\:df82/99:::2001\:a\:\:2703\:f06\:9619\:d89f | 2001\:a\:\:3a75\:3682\:c683\:8541 | 2001\:a\:\:584e\:912\:d5ee\:c74f:sear6.foo4.bar | sear6.fo.o.bar
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1:::no:yes:yes:no:no:::::unknown
+GENERAL:eth1:ethernet:NMDeviceEthernet:/org/freedesktop/NetworkManager/Devices/2:::virtual:::E7\:78\:B1\:93\:2B\:22:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/eth1::eth1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:100 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
-WIRED-PROPERTIES:off:
+WIRED-PROPERTIES:on:
IP4:192.168.127.210/25:192.168.88.4:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321 | dst = 192.168.135.81/32, nh = 192.168.32.11, mt = 1316413247 | dst = 192.168.24.65/26, nh = 192.168.23.163, mt = 3855574583:192.168.16.144 | 192.168.79.53 | 192.168.237.155:sear4.foo4.bar | sear4.foo3.bar | sear4.foo1.bar:192.168.211.91 | 192.168.58.182 | 192.168.114.97
DHCP4:dhcp-4-opt-0 = val-0 | dhcp-4-opt-1 = val-1 | dhcp-4-opt-2 = val-2 | dhcp-4-opt-3 = val-3 | dhcp-4-opt-4 = val-4 | dhcp-4-opt-5 = val-5 | dhcp-4-opt-7 = val-7 | dhcp-4-opt-8 = val-8 | dhcp-4-opt-9 = val-9
IP6:2001\:a\:\:1c1\:c178\:169f\:2b80/93 | 2001\:a\:\:1f79\:e0fb\:87b9\:3cc6/123::dst = 2001\:a\:\:3166\:7ed1\:e4ae\:7612/123, nh = \:\::2001\:a\:\:edda\:955\:dcf4\:23d4 | 2001\:a\:\:109f\:aa0f\:fb4a\:9d5a | 2001\:a\:\:61cf\:7c82\:e9c0\:c952:sear6.foo1.bar
DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-8 = val-8 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{1}:5fcfd6d7-1e63-3332-8826-a7eda103792d | con-1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/4:::virtual:::21\:E9\:64\:81\:8C\:A8:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -30689,7 +30689,7 @@ IP6:2001\:a\:\:fa05\:2ab4\:9300\:e8fe/116 | 2001\:a\:\:e9cf\:bd3\:caba\:99b3/86
DHCP6:dhcp-6-opt-0 = val-0 | dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-6-opt-4 = val-4 | dhcp-6-opt-5 = val-5 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-6-opt-9 = val-9
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
-GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1:::no:yes:yes:no:no:::::unknown
+GENERAL:wlan1:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/5:::virtual:::71\:52\:AD\:63\:5C\:7C:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan1::wlan1:no:yes:yes:no:no:::::unknown
CAPABILITIES:no:unknown:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
@@ -30700,51 +30700,51 @@ DHCP6:dhcp-6-opt-2 = val-2 | dhcp-6-opt-6 = val-6 | dhcp-6-opt-7 = val-7 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 611
+size: 610
location: clients/tests/test-client.py:test_004()/591
cmd: $NMCLI --mode tabular --terse --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 621
+size: 620
location: clients/tests/test-client.py:test_004()/592
cmd: $NMCLI --mode tabular --terse --color yes dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1777
+size: 1781
location: clients/tests/test-client.py:test_004()/593
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 1604 bytes
+stdout: 1608 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -30757,15 +30757,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1814
+size: 1818
location: clients/tests/test-client.py:test_004()/594
cmd: $NMCLI --mode tabular --terse --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1631 bytes
+stdout: 1635 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -30778,76 +30778,76 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 621
+size: 625
location: clients/tests/test-client.py:test_004()/595
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 631
+size: 635
location: clients/tests/test-client.py:test_004()/596
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 621
+size: 625
location: clients/tests/test-client.py:test_004()/597
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 631
+size: 635
location: clients/tests/test-client.py:test_004()/598
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 414 bytes
+stdout: 418 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
13\:E0\:74\:85\:7C\:D9
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
<<<
-size: 570
+size: 573
location: clients/tests/test-client.py:test_004()/599
cmd: $NMCLI --mode tabular --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 391 bytes
+stdout: 394 bytes
>>>
-wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
+wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
eth0:ethernet:/org/freedesktop/NetworkManager/Devices/1
eth1:ethernet:/org/freedesktop/NetworkManager/Devices/2
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/4
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/5
<<<
-size: 580
+size: 583
location: clients/tests/test-client.py:test_004()/600
cmd: $NMCLI --mode tabular --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 391 bytes
+stdout: 394 bytes
>>>
-wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
+wlan0:wifi:/org/freedesktop/NetworkManager/Devices/3
eth0:ethernet:/org/freedesktop/NetworkManager/Devices/1
eth1:ethernet:/org/freedesktop/NetworkManager/Devices/2
wlan1:wifi:/org/freedesktop/NetworkManager/Devices/4
@@ -31016,15 +31016,15 @@ stdout: 422 bytes
<<<
-size: 1780
+size: 1784
location: clients/tests/test-client.py:test_004()/613
cmd: $NMCLI --mode tabular --terse --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 1604 bytes
+stdout: 1608 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
@@ -31037,15 +31037,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1817
+size: 1821
location: clients/tests/test-client.py:test_004()/614
cmd: $NMCLI --mode tabular --terse --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1631 bytes
+stdout: 1635 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
INTERFACE-FLAGS:yes:yes:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
@@ -31058,51 +31058,51 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 624
+size: 623
location: clients/tests/test-client.py:test_004()/615
cmd: $NMCLI --mode tabular --terse --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 634
+size: 633
location: clients/tests/test-client.py:test_004()/616
cmd: $NMCLI --mode tabular --terse --color yes -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 446 bytes
+stdout: 445 bytes
>>>
wlan0
wifi
13\:E0\:74\:85\:7C\:D9
0
-20 (unavailable)
+100 (connected)
con-vpn-1
/org/freedesktop/NetworkManager/ActiveConnection/2
IP4:192.168.228.18/32 | 192.168.209.179/25:192.168.41.120:::sear4.foo2.bar | sear4.fo.x.y | sear4.foo1.bar | sear4.foo4.bar | sear4.fo.o.bar:192.168.120.79
IP6:::dst = 2001\:a\:\:dd5b\:aa7b\:b4a2\:e42/102, nh = \:\:, mt = 2504159086::sear6.foo2.bar | sear6.foo1.bar | sear6.fo.x.y | sear6.fo.o.bar | sear6.foo3.bar | sear6.foo4.bar
<<<
-size: 1891
+size: 1895
location: clients/tests/test-client.py:test_004()/617
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 1577 bytes
+stdout: 1581 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infra:1:54 Mbit/s:92:****:WPA1 WPA2
AP[2]: :61\:95\:77\:AC\:1E\:4C:wlan0-ap-1:Infra:1:54 Mbit/s:81:****:WPA1
@@ -31114,15 +31114,15 @@ DHCP6:dhcp-6-opt-1 = val-1 | dhcp-6-opt-2 = val-2 | dhcp-6-opt-3 = val-3 | dhcp-
CONNECTIONS:/org/freedesktop/NetworkManager/Settings/Connection/{2}:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1928
+size: 1932
location: clients/tests/test-client.py:test_004()/618
cmd: $NMCLI --mode tabular --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1604 bytes
+stdout: 1608 bytes
>>>
-GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:20 (unavailable):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0:::no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
-CAPABILITIES:no:unknown:no:no
+GENERAL:wlan0:wifi:NMDeviceWifi:/org/freedesktop/NetworkManager/Devices/3:::virtual:::13\:E0\:74\:85\:7C\:D9:0:100 (connected):0 (No reason given):0 (unknown):0 (unknown):/sys/devices/virtual/wlan0::wlan0:no:yes:yes:no:no::con-vpn-1:UUID-con-vpn-1-REPLACED-REPLACED-REP:/org/freedesktop/NetworkManager/ActiveConnection/2:unknown
+CAPABILITIES:no:21 Mb/s:no:no
WIFI-PROPERTIES:yes:yes:yes:yes:yes:yes:yes:unknown:unknown:no:no
AP[1]: :C0\:E2\:BE\:E8\:EF\:B6:wlan0-ap-2:Infrastruktura:1:54 Mb/s:92:****:WPA1 WPA2
AP[2]: :61\:95\:77\:AC\:1E\:4C:wlan0-ap-1:Infrastruktura:1:54 Mb/s:81:****:WPA1
@@ -31206,12 +31206,12 @@ UUID-con-xx1-REPLACED-REPLACED-REPLA
<<<
-size: 5166
+size: 5169
location: clients/tests/test-client.py:test_004()/623
cmd: $NMCLI --mode multiline con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -31300,7 +31300,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -31320,12 +31320,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5196
+size: 5199
location: clients/tests/test-client.py:test_004()/624
cmd: $NMCLI --mode multiline con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -31414,7 +31414,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -31434,12 +31434,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5166
+size: 5169
location: clients/tests/test-client.py:test_004()/625
cmd: $NMCLI --mode multiline con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -31528,7 +31528,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -31548,12 +31548,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5196
+size: 5199
location: clients/tests/test-client.py:test_004()/626
cmd: $NMCLI --mode multiline con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -31642,7 +31642,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -31878,17 +31878,17 @@ vpn.persistent: nie
vpn.timeout: 0
<<<
-size: 869
+size: 872
location: clients/tests/test-client.py:test_004()/631
cmd: $NMCLI --mode multiline -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 713 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -31900,17 +31900,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 882
+size: 885
location: clients/tests/test-client.py:test_004()/632
cmd: $NMCLI --mode multiline -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 713 bytes
+stdout: 716 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -31922,16 +31922,16 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 1081
+size: 1079
location: clients/tests/test-client.py:test_004()/633
cmd: $NMCLI --mode multiline dev s
lang: C
returncode: 0
-stdout: 943 bytes
+stdout: 941 bytes
>>>
DEVICE: wlan0
TYPE: wifi
-STATE: unavailable
+STATE: connected
CONNECTION: con-vpn-1
DEVICE: eth0
TYPE: ethernet
@@ -31951,16 +31951,16 @@ STATE: unavailable
CONNECTION: --
<<<
-size: 1096
+size: 1095
location: clients/tests/test-client.py:test_004()/634
cmd: $NMCLI --mode multiline dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 948 bytes
+stdout: 947 bytes
>>>
DEVICE: wlan0
TYPE: wifi
-STATE: niedostępne
+STATE: połączono
CONNECTION: con-vpn-1
DEVICE: eth0
TYPE: ethernet
@@ -31980,16 +31980,16 @@ STATE: niedostępne
CONNECTION: --
<<<
-size: 2496
+size: 2494
location: clients/tests/test-client.py:test_004()/635
cmd: $NMCLI --mode multiline -f all dev status
lang: C
returncode: 0
-stdout: 2345 bytes
+stdout: 2343 bytes
>>>
DEVICE: wlan0
TYPE: wifi
-STATE: unavailable
+STATE: connected
IP4-CONNECTIVITY: unknown
IP6-CONNECTIVITY: unknown
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
@@ -32034,16 +32034,16 @@ CON-UUID: --
CON-PATH: --
<<<
-size: 2521
+size: 2520
location: clients/tests/test-client.py:test_004()/636
cmd: $NMCLI --mode multiline -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2360 bytes
+stdout: 2359 bytes
>>>
DEVICE: wlan0
TYPE: wifi
-STATE: niedostępne
+STATE: połączono
IP4-CONNECTIVITY: nieznane
IP6-CONNECTIVITY: nieznane
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
@@ -32088,18 +32088,18 @@ CON-UUID: --
CON-PATH: --
<<<
-size: 8060
+size: 8057
location: clients/tests/test-client.py:test_004()/637
cmd: $NMCLI --mode multiline dev show
lang: C
returncode: 0
-stdout: 7918 bytes
+stdout: 7915 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -32127,7 +32127,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -32153,7 +32153,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -32234,18 +32234,18 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 8091
+size: 8089
location: clients/tests/test-client.py:test_004()/638
cmd: $NMCLI --mode multiline dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 7939 bytes
+stdout: 7937 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -32273,7 +32273,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -32299,7 +32299,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -32380,12 +32380,12 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 22443
+size: 22453
location: clients/tests/test-client.py:test_004()/639
cmd: $NMCLI --mode multiline -f all dev show
lang: C
returncode: 0
-stdout: 22293 bytes
+stdout: 22303 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -32398,13 +32398,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -32416,7 +32416,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -32506,7 +32506,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -32524,7 +32524,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -32574,7 +32574,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -32592,7 +32592,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -32649,7 +32649,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -32745,7 +32745,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -32804,12 +32804,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 22604
+size: 22616
location: clients/tests/test-client.py:test_004()/640
cmd: $NMCLI --mode multiline -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 22444 bytes
+stdout: 22456 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -32822,13 +32822,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -32840,7 +32840,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -32930,7 +32930,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -32948,7 +32948,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -32998,7 +32998,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -33016,7 +33016,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -33073,7 +33073,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -33169,7 +33169,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -33228,18 +33228,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1511
+size: 1510
location: clients/tests/test-client.py:test_004()/641
cmd: $NMCLI --mode multiline dev show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -33272,7 +33272,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -33294,12 +33294,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5376
+size: 5378
location: clients/tests/test-client.py:test_004()/643
cmd: $NMCLI --mode multiline -f all dev show wlan0
lang: C
returncode: 0
-stdout: 5221 bytes
+stdout: 5223 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33312,13 +33312,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -33330,7 +33330,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -33404,12 +33404,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5434
+size: 5438
location: clients/tests/test-client.py:test_004()/644
cmd: $NMCLI --mode multiline -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5269 bytes
+stdout: 5273 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33422,13 +33422,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -33440,7 +33440,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -33514,12 +33514,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2184
+size: 2186
location: clients/tests/test-client.py:test_004()/645
cmd: $NMCLI --mode multiline -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33532,13 +33532,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -33563,12 +33563,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2210
+size: 2213
location: clients/tests/test-client.py:test_004()/646
cmd: $NMCLI --mode multiline -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33581,13 +33581,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -33612,12 +33612,12 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 2184
+size: 2186
location: clients/tests/test-client.py:test_004()/647
cmd: $NMCLI --mode multiline -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33630,13 +33630,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -33661,12 +33661,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2210
+size: 2213
location: clients/tests/test-client.py:test_004()/648
cmd: $NMCLI --mode multiline -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -33679,13 +33679,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -34320,12 +34320,12 @@ DBUS-PATH: /org/freedesktop/NetworkManager/AccessPo
<<<
-size: 5379
+size: 5381
location: clients/tests/test-client.py:test_004()/663
cmd: $NMCLI --mode multiline -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 5221 bytes
+stdout: 5223 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -34338,13 +34338,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -34356,7 +34356,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -34430,12 +34430,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5437
+size: 5441
location: clients/tests/test-client.py:test_004()/664
cmd: $NMCLI --mode multiline -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5269 bytes
+stdout: 5273 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -34448,13 +34448,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -34466,7 +34466,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -34540,18 +34540,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1524
+size: 1523
location: clients/tests/test-client.py:test_004()/665
cmd: $NMCLI --mode multiline -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -34584,7 +34584,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -34606,12 +34606,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5386
+size: 5388
location: clients/tests/test-client.py:test_004()/667
cmd: $NMCLI --mode multiline -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 5090 bytes
+stdout: 5092 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -34624,13 +34624,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -34642,7 +34642,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
WIFI-PROPERTIES.WEP: yes
@@ -34713,12 +34713,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5443
+size: 5447
location: clients/tests/test-client.py:test_004()/668
cmd: $NMCLI --mode multiline -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5137 bytes
+stdout: 5141 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -34731,13 +34731,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -34749,7 +34749,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
WIFI-PROPERTIES.WEP: tak
@@ -34928,12 +34928,12 @@ connection.type: 802-11-wireless
connection.interface-name: --
<<<
-size: 5178
+size: 5181
location: clients/tests/test-client.py:test_004()/673
cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -35022,7 +35022,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -35042,12 +35042,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5208
+size: 5211
location: clients/tests/test-client.py:test_004()/674
cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -35136,7 +35136,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -35156,12 +35156,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5178
+size: 5181
location: clients/tests/test-client.py:test_004()/675
cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 5017 bytes
+stdout: 5020 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -35250,7 +35250,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -35270,12 +35270,12 @@ VPN.CFG[2]: key2 = val2
VPN.CFG[3]: key3 = val3
<<<
-size: 5208
+size: 5211
location: clients/tests/test-client.py:test_004()/676
cmd: $NMCLI --mode multiline --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5037 bytes
+stdout: 5040 bytes
>>>
connection.id: con-vpn-1
connection.uuid: UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -35364,7 +35364,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -35600,17 +35600,17 @@ vpn.persistent: nie
vpn.timeout: 0
<<<
-size: 881
+size: 884
location: clients/tests/test-client.py:test_004()/681
cmd: $NMCLI --mode multiline --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 710 bytes
+stdout: 713 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -35622,17 +35622,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 894
+size: 897
location: clients/tests/test-client.py:test_004()/682
cmd: $NMCLI --mode multiline --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 713 bytes
+stdout: 716 bytes
>>>
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -35644,17 +35644,17 @@ GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
<<<
-size: 1254
+size: 1256
location: clients/tests/test-client.py:test_004()/683
cmd: $NMCLI --mode multiline --color yes dev s
lang: C
returncode: 0
-stdout: 1103 bytes
+stdout: 1105 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-STATE: unavailable
-CONNECTION: con-vpn-1
+DEVICE: wlan0
+TYPE: wifi
+STATE: connected
+CONNECTION: con-vpn-1
DEVICE: eth0
TYPE: ethernet
STATE: unavailable
@@ -35673,17 +35673,17 @@ STATE: unavailable
CONNECTION: --
<<<
-size: 1269
+size: 1272
location: clients/tests/test-client.py:test_004()/684
cmd: $NMCLI --mode multiline --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1108 bytes
+stdout: 1111 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-STATE: niedostępne
-CONNECTION: con-vpn-1
+DEVICE: wlan0
+TYPE: wifi
+STATE: połączono
+CONNECTION: con-vpn-1
DEVICE: eth0
TYPE: ethernet
STATE: niedostępne
@@ -35702,22 +35702,22 @@ STATE: niedostępne
CONNECTION: --
<<<
-size: 2868
+size: 2875
location: clients/tests/test-client.py:test_004()/685
cmd: $NMCLI --mode multiline --color yes -f all dev status
lang: C
returncode: 0
-stdout: 2705 bytes
+stdout: 2712 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-STATE: unavailable
-IP4-CONNECTIVITY: unknown
-IP6-CONNECTIVITY: unknown
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-CONNECTION: con-vpn-1
-CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE: wlan0
+TYPE: wifi
+STATE: connected
+IP4-CONNECTIVITY: unknown
+IP6-CONNECTIVITY: unknown
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+CONNECTION: con-vpn-1
+CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
DEVICE: eth0
TYPE: ethernet
STATE: unavailable
@@ -35756,22 +35756,22 @@ CON-UUID: --
CON-PATH: --
<<<
-size: 2893
+size: 2901
location: clients/tests/test-client.py:test_004()/686
cmd: $NMCLI --mode multiline --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2720 bytes
+stdout: 2728 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-STATE: niedostępne
-IP4-CONNECTIVITY: nieznane
-IP6-CONNECTIVITY: nieznane
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-CONNECTION: con-vpn-1
-CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE: wlan0
+TYPE: wifi
+STATE: połączono
+IP4-CONNECTIVITY: nieznane
+IP6-CONNECTIVITY: nieznane
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+CONNECTION: con-vpn-1
+CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
DEVICE: eth0
TYPE: ethernet
STATE: niedostępne
@@ -35810,18 +35810,18 @@ CON-UUID: --
CON-PATH: --
<<<
-size: 8072
+size: 8069
location: clients/tests/test-client.py:test_004()/687
cmd: $NMCLI --mode multiline --color yes dev show
lang: C
returncode: 0
-stdout: 7918 bytes
+stdout: 7915 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -35849,7 +35849,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -35875,7 +35875,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -35956,18 +35956,18 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 8103
+size: 8101
location: clients/tests/test-client.py:test_004()/688
cmd: $NMCLI --mode multiline --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 7939 bytes
+stdout: 7937 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -35995,7 +35995,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -36021,7 +36021,7 @@ GENERAL.MTU: 0
GENERAL.STATE: 20 (niedostępne)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -36102,12 +36102,12 @@ IP6.DNS[1]: 2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]: sear6.fo.x.y
<<<
-size: 22779
+size: 22789
location: clients/tests/test-client.py:test_004()/689
cmd: $NMCLI --mode multiline --color yes -f all dev show
lang: C
returncode: 0
-stdout: 22617 bytes
+stdout: 22627 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -36120,13 +36120,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -36138,7 +36138,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -36228,7 +36228,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -36246,7 +36246,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -36296,7 +36296,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -36314,7 +36314,7 @@ CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -36371,7 +36371,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -36467,7 +36467,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -36526,12 +36526,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 22940
+size: 22952
location: clients/tests/test-client.py:test_004()/690
cmd: $NMCLI --mode multiline --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 22768 bytes
+stdout: 22780 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -36544,13 +36544,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -36562,7 +36562,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -36652,7 +36652,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -36670,7 +36670,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
IP4.GATEWAY: --
@@ -36720,7 +36720,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -36738,7 +36738,7 @@ CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
IP4.ROUTE[1]: dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -36795,7 +36795,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -36891,7 +36891,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -36950,18 +36950,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1523
+size: 1522
location: clients/tests/test-client.py:test_004()/691
cmd: $NMCLI --mode multiline --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -36994,7 +36994,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -37016,12 +37016,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5631
+size: 5633
location: clients/tests/test-client.py:test_004()/693
cmd: $NMCLI --mode multiline --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 5464 bytes
+stdout: 5466 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37034,13 +37034,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -37052,7 +37052,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -37126,12 +37126,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5689
+size: 5693
location: clients/tests/test-client.py:test_004()/694
cmd: $NMCLI --mode multiline --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5512 bytes
+stdout: 5516 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37144,13 +37144,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -37162,7 +37162,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -37236,12 +37236,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 2196
+size: 2198
location: clients/tests/test-client.py:test_004()/695
cmd: $NMCLI --mode multiline --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37254,13 +37254,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -37285,12 +37285,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2222
+size: 2225
location: clients/tests/test-client.py:test_004()/696
cmd: $NMCLI --mode multiline --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37303,13 +37303,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -37334,12 +37334,12 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 2196
+size: 2198
location: clients/tests/test-client.py:test_004()/697
cmd: $NMCLI --mode multiline --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1994 bytes
+stdout: 1996 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37352,13 +37352,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -37383,12 +37383,12 @@ WIFI-PROPERTIES.MESH: no
WIFI-PROPERTIES.IBSS-RSN: no
<<<
-size: 2222
+size: 2225
location: clients/tests/test-client.py:test_004()/698
cmd: $NMCLI --mode multiline --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2010 bytes
+stdout: 2013 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -37401,13 +37401,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -37432,16 +37432,16 @@ WIFI-PROPERTIES.MESH: nie
WIFI-PROPERTIES.IBSS-RSN: nie
<<<
-size: 1164
+size: 1167
location: clients/tests/test-client.py:test_004()/699
cmd: $NMCLI --mode multiline --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 991 bytes
+stdout: 994 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+DEVICE: wlan0
+TYPE: wifi
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
DEVICE: eth0
TYPE: ethernet
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/1
@@ -37456,16 +37456,16 @@ TYPE: wifi
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/5
<<<
-size: 1174
+size: 1177
location: clients/tests/test-client.py:test_004()/700
cmd: $NMCLI --mode multiline --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 991 bytes
+stdout: 994 bytes
>>>
-DEVICE: wlan0
-TYPE: wifi
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+DEVICE: wlan0
+TYPE: wifi
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
DEVICE: eth0
TYPE: ethernet
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/1
@@ -38042,12 +38042,12 @@ DBUS-PATH: /org/freedesktop/NetworkManager/Acc
<<<
-size: 5634
+size: 5636
location: clients/tests/test-client.py:test_004()/713
cmd: $NMCLI --mode multiline --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 5464 bytes
+stdout: 5466 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -38060,13 +38060,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -38078,7 +38078,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
INTERFACE-FLAGS.UP: yes
@@ -38152,12 +38152,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5692
+size: 5696
location: clients/tests/test-client.py:test_004()/714
cmd: $NMCLI --mode multiline --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5512 bytes
+stdout: 5516 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -38170,13 +38170,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -38188,7 +38188,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
INTERFACE-FLAGS.UP: tak
@@ -38262,18 +38262,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1536
+size: 1535
location: clients/tests/test-client.py:test_004()/715
cmd: $NMCLI --mode multiline --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 1363 bytes
+stdout: 1362 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -38306,7 +38306,7 @@ GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.CONNECTION: con-vpn-1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]: 192.168.228.18/32
@@ -38328,12 +38328,12 @@ IP6.DOMAIN[5]: sear6.foo3.bar
IP6.DOMAIN[6]: sear6.foo4.bar
<<<
-size: 5641
+size: 5643
location: clients/tests/test-client.py:test_004()/717
cmd: $NMCLI --mode multiline --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 5333 bytes
+stdout: 5335 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -38346,13 +38346,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -38364,7 +38364,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: unknown
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
WIFI-PROPERTIES.WEP: yes
@@ -38435,12 +38435,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS: /org/freedesktop/NetworkManager/Settings
CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 5698
+size: 5702
location: clients/tests/test-client.py:test_004()/718
cmd: $NMCLI --mode multiline --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 5380 bytes
+stdout: 5384 bytes
>>>
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
@@ -38453,13 +38453,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -38471,7 +38471,7 @@ GENERAL.CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED: nieznane
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
WIFI-PROPERTIES.WEP: tak
@@ -38650,12 +38650,12 @@ connection.type: 802-11-wireless
connection.interface-name: --
<<<
-size: 6187
+size: 6190
location: clients/tests/test-client.py:test_004()/723
cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -38755,7 +38755,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -38777,12 +38777,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6229
+size: 6232
location: clients/tests/test-client.py:test_004()/724
cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -38882,7 +38882,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -38904,12 +38904,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6187
+size: 6190
location: clients/tests/test-client.py:test_004()/725
cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -39009,7 +39009,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -39031,12 +39031,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6229
+size: 6232
location: clients/tests/test-client.py:test_004()/726
cmd: $NMCLI --mode multiline --pretty con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -39136,7 +39136,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -39398,12 +39398,12 @@ vpn.timeout: 0
-------------------------------------------------------------------------------
<<<
-size: 1192
+size: 1195
location: clients/tests/test-client.py:test_004()/731
cmd: $NMCLI --mode multiline --pretty -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 1023 bytes
+stdout: 1026 bytes
>>>
===============================================================================
Activate connection details (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -39411,7 +39411,7 @@ stdout: 1023 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -39424,12 +39424,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1212
+size: 1215
location: clients/tests/test-client.py:test_004()/732
cmd: $NMCLI --mode multiline --pretty -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1033 bytes
+stdout: 1036 bytes
>>>
===============================================================================
Szczegóły aktywowania połączenia (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -39437,7 +39437,7 @@ stdout: 1033 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -39450,19 +39450,19 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1700
+size: 1698
location: clients/tests/test-client.py:test_004()/733
cmd: $NMCLI --mode multiline --pretty dev s
lang: C
returncode: 0
-stdout: 1552 bytes
+stdout: 1550 bytes
>>>
===============================================================================
Status of devices
===============================================================================
DEVICE: wlan0
TYPE: wifi
-STATE: unavailable
+STATE: connected
CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
DEVICE: eth0
@@ -39487,19 +39487,19 @@ CONNECTION: --
-------------------------------------------------------------------------------
<<<
-size: 1715
+size: 1714
location: clients/tests/test-client.py:test_004()/734
cmd: $NMCLI --mode multiline --pretty dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1557 bytes
+stdout: 1556 bytes
>>>
===============================================================================
Stan urzÄ…dzenia
===============================================================================
DEVICE: wlan0
TYPE: wifi
-STATE: niedostępne
+STATE: połączono
CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
DEVICE: eth0
@@ -39524,19 +39524,19 @@ CONNECTION: --
-------------------------------------------------------------------------------
<<<
-size: 3114
+size: 3112
location: clients/tests/test-client.py:test_004()/735
cmd: $NMCLI --mode multiline --pretty -f all dev status
lang: C
returncode: 0
-stdout: 2954 bytes
+stdout: 2952 bytes
>>>
===============================================================================
Status of devices
===============================================================================
DEVICE: wlan0
TYPE: wifi
-STATE: unavailable
+STATE: connected
IP4-CONNECTIVITY: unknown
IP6-CONNECTIVITY: unknown
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
@@ -39586,19 +39586,19 @@ CON-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 3139
+size: 3138
location: clients/tests/test-client.py:test_004()/736
cmd: $NMCLI --mode multiline --pretty -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2969 bytes
+stdout: 2968 bytes
>>>
===============================================================================
Stan urzÄ…dzenia
===============================================================================
DEVICE: wlan0
TYPE: wifi
-STATE: niedostępne
+STATE: połączono
IP4-CONNECTIVITY: nieznane
IP6-CONNECTIVITY: nieznane
DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
@@ -39648,12 +39648,12 @@ CON-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 12885
+size: 12882
location: clients/tests/test-client.py:test_004()/737
cmd: $NMCLI --mode multiline --pretty dev show
lang: C
returncode: 0
-stdout: 12733 bytes
+stdout: 12730 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -39666,7 +39666,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -39709,7 +39709,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -39748,7 +39748,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -39856,12 +39856,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 12949
+size: 12947
location: clients/tests/test-client.py:test_004()/738
cmd: $NMCLI --mode multiline --pretty dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12787 bytes
+stdout: 12785 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -39874,7 +39874,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -39917,7 +39917,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -39956,7 +39956,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -40064,12 +40064,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 27427
+size: 27437
location: clients/tests/test-client.py:test_004()/739
cmd: $NMCLI --mode multiline --pretty -f all dev show
lang: C
returncode: 0
-stdout: 27268 bytes
+stdout: 27278 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -40085,13 +40085,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -40104,7 +40104,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -40208,7 +40208,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -40229,7 +40229,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -40288,7 +40288,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -40309,7 +40309,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -40375,7 +40375,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -40484,7 +40484,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -40552,12 +40552,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 27621
+size: 27633
location: clients/tests/test-client.py:test_004()/740
cmd: $NMCLI --mode multiline --pretty -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 27452 bytes
+stdout: 27464 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -40573,13 +40573,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -40592,7 +40592,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -40696,7 +40696,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -40717,7 +40717,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -40776,7 +40776,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -40797,7 +40797,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -40863,7 +40863,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -40972,7 +40972,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -41040,12 +41040,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2451
+size: 2450
location: clients/tests/test-client.py:test_004()/741
cmd: $NMCLI --mode multiline --pretty dev show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -41058,7 +41058,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -41103,7 +41103,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -41130,12 +41130,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6556
+size: 6558
location: clients/tests/test-client.py:test_004()/743
cmd: $NMCLI --mode multiline --pretty -f all dev show wlan0
lang: C
returncode: 0
-stdout: 6392 bytes
+stdout: 6394 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -41151,13 +41151,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -41170,7 +41170,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -41255,12 +41255,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6621
+size: 6625
location: clients/tests/test-client.py:test_004()/744
cmd: $NMCLI --mode multiline --pretty -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6447 bytes
+stdout: 6451 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -41276,13 +41276,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -41295,7 +41295,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -41380,12 +41380,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2644
+size: 2646
location: clients/tests/test-client.py:test_004()/745
cmd: $NMCLI --mode multiline --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -41401,13 +41401,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -41435,12 +41435,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2677
+size: 2680
location: clients/tests/test-client.py:test_004()/746
cmd: $NMCLI --mode multiline --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -41456,13 +41456,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -41490,12 +41490,12 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 2644
+size: 2646
location: clients/tests/test-client.py:test_004()/747
cmd: $NMCLI --mode multiline --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -41511,13 +41511,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -41545,12 +41545,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2677
+size: 2680
location: clients/tests/test-client.py:test_004()/748
cmd: $NMCLI --mode multiline --pretty -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -41566,13 +41566,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -42328,12 +42328,12 @@ DBUS-PATH: /org/freedesktop/NetworkManager/AccessPo
<<<
-size: 6559
+size: 6561
location: clients/tests/test-client.py:test_004()/763
cmd: $NMCLI --mode multiline --pretty -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 6392 bytes
+stdout: 6394 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -42349,13 +42349,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -42368,7 +42368,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -42453,12 +42453,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6624
+size: 6628
location: clients/tests/test-client.py:test_004()/764
cmd: $NMCLI --mode multiline --pretty -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6447 bytes
+stdout: 6451 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -42474,13 +42474,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -42493,7 +42493,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -42578,12 +42578,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2464
+size: 2463
location: clients/tests/test-client.py:test_004()/765
cmd: $NMCLI --mode multiline --pretty -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -42596,7 +42596,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -42641,7 +42641,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -42668,12 +42668,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6486
+size: 6488
location: clients/tests/test-client.py:test_004()/767
cmd: $NMCLI --mode multiline --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 6181 bytes
+stdout: 6183 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -42689,13 +42689,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -42708,7 +42708,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -42789,12 +42789,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6550
+size: 6554
location: clients/tests/test-client.py:test_004()/768
cmd: $NMCLI --mode multiline --pretty -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6235 bytes
+stdout: 6239 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -42810,13 +42810,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -42829,7 +42829,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -43074,12 +43074,12 @@ connection.interface-name: --
-------------------------------------------------------------------------------
<<<
-size: 6199
+size: 6202
location: clients/tests/test-client.py:test_004()/773
cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -43179,7 +43179,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -43201,12 +43201,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6241
+size: 6244
location: clients/tests/test-client.py:test_004()/774
cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -43306,7 +43306,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -43328,12 +43328,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6199
+size: 6202
location: clients/tests/test-client.py:test_004()/775
cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 6029 bytes
+stdout: 6032 bytes
>>>
===============================================================================
Connection profile details (con-vpn-1)
@@ -43433,7 +43433,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -43455,12 +43455,12 @@ VPN.CFG[3]: key3 = val3
-------------------------------------------------------------------------------
<<<
-size: 6241
+size: 6244
location: clients/tests/test-client.py:test_004()/776
cmd: $NMCLI --mode multiline --pretty --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6061 bytes
+stdout: 6064 bytes
>>>
===============================================================================
Szczegóły profilu połączenia (con-vpn-1)
@@ -43560,7 +43560,7 @@ proxy.pac-script: --
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -43822,12 +43822,12 @@ vpn.timeout: 0
-------------------------------------------------------------------------------
<<<
-size: 1204
+size: 1207
location: clients/tests/test-client.py:test_004()/781
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 1023 bytes
+stdout: 1026 bytes
>>>
===============================================================================
Activate connection details (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -43835,7 +43835,7 @@ stdout: 1023 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: activated
GENERAL.DEFAULT: no
GENERAL.DEFAULT6: no
@@ -43848,12 +43848,12 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1224
+size: 1227
location: clients/tests/test-client.py:test_004()/782
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1033 bytes
+stdout: 1036 bytes
>>>
===============================================================================
Szczegóły aktywowania połączenia (UUID-con-vpn-1-REPLACED-REPLACED-REP)
@@ -43861,7 +43861,7 @@ stdout: 1033 bytes
GENERAL.NAME: con-vpn-1
GENERAL.UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES: wlan0
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.STATE: aktywowano
GENERAL.DEFAULT: nie
GENERAL.DEFAULT6: nie
@@ -43874,20 +43874,20 @@ GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 1872
+size: 1874
location: clients/tests/test-client.py:test_004()/783
cmd: $NMCLI --mode multiline --pretty --color yes dev s
lang: C
returncode: 0
-stdout: 1712 bytes
+stdout: 1714 bytes
>>>
===============================================================================
Status of devices
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-STATE: unavailable
-CONNECTION: con-vpn-1
+DEVICE: wlan0
+TYPE: wifi
+STATE: connected
+CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -43911,20 +43911,20 @@ CONNECTION: --
-------------------------------------------------------------------------------
<<<
-size: 1887
+size: 1890
location: clients/tests/test-client.py:test_004()/784
cmd: $NMCLI --mode multiline --pretty --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1717 bytes
+stdout: 1720 bytes
>>>
===============================================================================
Stan urzÄ…dzenia
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-STATE: niedostępne
-CONNECTION: con-vpn-1
+DEVICE: wlan0
+TYPE: wifi
+STATE: połączono
+CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -43948,25 +43948,25 @@ CONNECTION: --
-------------------------------------------------------------------------------
<<<
-size: 3486
+size: 3493
location: clients/tests/test-client.py:test_004()/785
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev status
lang: C
returncode: 0
-stdout: 3314 bytes
+stdout: 3321 bytes
>>>
===============================================================================
Status of devices
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-STATE: unavailable
-IP4-CONNECTIVITY: unknown
-IP6-CONNECTIVITY: unknown
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-CONNECTION: con-vpn-1
-CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE: wlan0
+TYPE: wifi
+STATE: connected
+IP4-CONNECTIVITY: unknown
+IP6-CONNECTIVITY: unknown
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+CONNECTION: con-vpn-1
+CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -44010,25 +44010,25 @@ CON-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 3511
+size: 3519
location: clients/tests/test-client.py:test_004()/786
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3329 bytes
+stdout: 3337 bytes
>>>
===============================================================================
Stan urzÄ…dzenia
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-STATE: niedostępne
-IP4-CONNECTIVITY: nieznane
-IP6-CONNECTIVITY: nieznane
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-CONNECTION: con-vpn-1
-CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE: wlan0
+TYPE: wifi
+STATE: połączono
+IP4-CONNECTIVITY: nieznane
+IP6-CONNECTIVITY: nieznane
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+CONNECTION: con-vpn-1
+CON-UUID: UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -44072,12 +44072,12 @@ CON-PATH: --
-------------------------------------------------------------------------------
<<<
-size: 12897
+size: 12894
location: clients/tests/test-client.py:test_004()/787
cmd: $NMCLI --mode multiline --pretty --color yes dev show
lang: C
returncode: 0
-stdout: 12733 bytes
+stdout: 12730 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -44090,7 +44090,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -44133,7 +44133,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -44172,7 +44172,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -44280,12 +44280,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 12961
+size: 12959
location: clients/tests/test-client.py:test_004()/788
cmd: $NMCLI --mode multiline --pretty --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12787 bytes
+stdout: 12785 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -44298,7 +44298,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -44341,7 +44341,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -44380,7 +44380,7 @@ GENERAL.CONNECTION: --
-------------------------------------------------------------------------------
GENERAL.CON-PATH: --
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -44488,12 +44488,12 @@ IP6.DOMAIN[1]: sear6.fo.x.y
-------------------------------------------------------------------------------
<<<
-size: 27763
+size: 27773
location: clients/tests/test-client.py:test_004()/789
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show
lang: C
returncode: 0
-stdout: 27592 bytes
+stdout: 27602 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -44509,13 +44509,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -44528,7 +44528,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -44632,7 +44632,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -44653,7 +44653,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -44712,7 +44712,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -44733,7 +44733,7 @@ INTERFACE-FLAGS.UP: yes
INTERFACE-FLAGS.LOWER-UP: yes
INTERFACE-FLAGS.CARRIER: no
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: off
+WIRED-PROPERTIES.CARRIER: on
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -44799,7 +44799,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -44908,7 +44908,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -44976,12 +44976,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 27957
+size: 27969
location: clients/tests/test-client.py:test_004()/790
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 27776 bytes
+stdout: 27788 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -44997,13 +44997,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45016,7 +45016,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -45120,7 +45120,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45141,7 +45141,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.49.34/22
IP4.ADDRESS[2]: 192.168.135.86/19
@@ -45200,7 +45200,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/eth1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: eth1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45221,7 +45221,7 @@ INTERFACE-FLAGS.UP: tak
INTERFACE-FLAGS.LOWER-UP: tak
INTERFACE-FLAGS.CARRIER: nie
-------------------------------------------------------------------------------
-WIRED-PROPERTIES.CARRIER: wyłączone
+WIRED-PROPERTIES.CARRIER: włączone
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.127.210/25
IP4.GATEWAY: 192.168.88.4
@@ -45287,7 +45287,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45396,7 +45396,7 @@ GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan1
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan1
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45464,12 +45464,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2463
+size: 2462
location: clients/tests/test-client.py:test_004()/791
cmd: $NMCLI --mode multiline --pretty --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -45482,7 +45482,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -45527,7 +45527,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -45554,12 +45554,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6811
+size: 6813
location: clients/tests/test-client.py:test_004()/793
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 6635 bytes
+stdout: 6637 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -45575,13 +45575,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -45594,7 +45594,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -45679,12 +45679,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6876
+size: 6880
location: clients/tests/test-client.py:test_004()/794
cmd: $NMCLI --mode multiline --pretty --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6690 bytes
+stdout: 6694 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -45700,13 +45700,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45719,7 +45719,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -45804,12 +45804,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2656
+size: 2658
location: clients/tests/test-client.py:test_004()/795
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -45825,13 +45825,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -45859,12 +45859,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2689
+size: 2692
location: clients/tests/test-client.py:test_004()/796
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -45880,13 +45880,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -45914,12 +45914,12 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 2656
+size: 2658
location: clients/tests/test-client.py:test_004()/797
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 2445 bytes
+stdout: 2447 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -45935,13 +45935,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -45969,12 +45969,12 @@ WIFI-PROPERTIES.IBSS-RSN: no
-------------------------------------------------------------------------------
<<<
-size: 2689
+size: 2692
location: clients/tests/test-client.py:test_004()/798
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2468 bytes
+stdout: 2471 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -45990,13 +45990,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -46024,19 +46024,19 @@ WIFI-PROPERTIES.IBSS-RSN: nie
-------------------------------------------------------------------------------
<<<
-size: 1783
+size: 1786
location: clients/tests/test-client.py:test_004()/799
cmd: $NMCLI --mode multiline --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 1600 bytes
+stdout: 1603 bytes
>>>
===============================================================================
Status of devices
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+DEVICE: wlan0
+TYPE: wifi
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -46056,19 +46056,19 @@ DBUS-PATH: /org/freedesktop/NetworkManager/Devi
-------------------------------------------------------------------------------
<<<
-size: 1793
+size: 1796
location: clients/tests/test-client.py:test_004()/800
cmd: $NMCLI --mode multiline --pretty --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1600 bytes
+stdout: 1603 bytes
>>>
===============================================================================
Stan urzÄ…dzenia
===============================================================================
-DEVICE: wlan0
-TYPE: wifi
-DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
+DEVICE: wlan0
+TYPE: wifi
+DBUS-PATH: /org/freedesktop/NetworkManager/Devices/3
-------------------------------------------------------------------------------
DEVICE: eth0
TYPE: ethernet
@@ -46752,12 +46752,12 @@ DBUS-PATH: /org/freedesktop/NetworkManager/Acc
<<<
-size: 6814
+size: 6816
location: clients/tests/test-client.py:test_004()/813
cmd: $NMCLI --mode multiline --pretty --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 6635 bytes
+stdout: 6637 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -46773,13 +46773,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -46792,7 +46792,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -46877,12 +46877,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6879
+size: 6883
location: clients/tests/test-client.py:test_004()/814
cmd: $NMCLI --mode multiline --pretty --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6690 bytes
+stdout: 6694 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -46898,13 +46898,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -46917,7 +46917,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -47002,12 +47002,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 2476
+size: 2475
location: clients/tests/test-client.py:test_004()/815
cmd: $NMCLI --mode multiline --pretty --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 2294 bytes
+stdout: 2293 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -47020,7 +47020,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -47065,7 +47065,7 @@ GENERAL.HWADDR: 13:E0:74:85:7C:D9
-------------------------------------------------------------------------------
GENERAL.MTU: 0
-------------------------------------------------------------------------------
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
-------------------------------------------------------------------------------
GENERAL.CONNECTION: con-vpn-1
-------------------------------------------------------------------------------
@@ -47092,12 +47092,12 @@ IP6.DOMAIN[6]: sear6.foo4.bar
-------------------------------------------------------------------------------
<<<
-size: 6741
+size: 6743
location: clients/tests/test-client.py:test_004()/817
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 6424 bytes
+stdout: 6426 bytes
>>>
===============================================================================
Device details (wlan0)
@@ -47113,13 +47113,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (unavailable)
+GENERAL.STATE: 100 (connected)
GENERAL.REASON: 0 (No reason given)
GENERAL.IP4-CONNECTIVITY: 0 (unknown)
GENERAL.IP6-CONNECTIVITY: 0 (unknown)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: no
GENERAL.NM-MANAGED: yes
GENERAL.AUTOCONNECT: yes
@@ -47132,7 +47132,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: unknown
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: no
-CAPABILITIES.SPEED: unknown
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: no
CAPABILITIES.SRIOV: no
-------------------------------------------------------------------------------
@@ -47213,12 +47213,12 @@ CONNECTIONS.AVAILABLE-CONNECTIONS[1]: UUID-con-xx1-REPLACED-REPLACED-REPLA | c
-------------------------------------------------------------------------------
<<<
-size: 6805
+size: 6809
location: clients/tests/test-client.py:test_004()/818
cmd: $NMCLI --mode multiline --pretty --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 6478 bytes
+stdout: 6482 bytes
>>>
===============================================================================
Informacje o urządzeniu (wlan0)
@@ -47234,13 +47234,13 @@ GENERAL.DRIVER-VERSION: --
GENERAL.FIRMWARE-VERSION: --
GENERAL.HWADDR: 13:E0:74:85:7C:D9
GENERAL.MTU: 0
-GENERAL.STATE: 20 (niedostępne)
+GENERAL.STATE: 100 (połączono)
GENERAL.REASON: 0 (Nie podano przyczyny)
GENERAL.IP4-CONNECTIVITY: 0 (nieznane)
GENERAL.IP6-CONNECTIVITY: 0 (nieznane)
GENERAL.UDI: /sys/devices/virtual/wlan0
GENERAL.PATH: --
-GENERAL.IP-IFACE: --
+GENERAL.IP-IFACE: wlan0
GENERAL.IS-SOFTWARE: nie
GENERAL.NM-MANAGED: tak
GENERAL.AUTOCONNECT: tak
@@ -47253,7 +47253,7 @@ GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo
GENERAL.METERED: nieznane
-------------------------------------------------------------------------------
CAPABILITIES.CARRIER-DETECT: nie
-CAPABILITIES.SPEED: nieznane
+CAPABILITIES.SPEED: 21 Mb/s
CAPABILITIES.IS-SOFTWARE: nie
CAPABILITIES.SRIOV: nie
-------------------------------------------------------------------------------
@@ -47498,12 +47498,12 @@ connection.interface-name: --
-------------------------------------------------------------------------------
<<<
-size: 2614
+size: 2619
location: clients/tests/test-client.py:test_004()/823
cmd: $NMCLI --mode multiline --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -47592,7 +47592,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -47612,12 +47612,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2624
+size: 2629
location: clients/tests/test-client.py:test_004()/824
cmd: $NMCLI --mode multiline --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -47706,7 +47706,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -47726,12 +47726,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2614
+size: 2619
location: clients/tests/test-client.py:test_004()/825
cmd: $NMCLI --mode multiline --terse con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -47820,7 +47820,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -47840,12 +47840,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2624
+size: 2629
location: clients/tests/test-client.py:test_004()/826
cmd: $NMCLI --mode multiline --terse con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -47934,7 +47934,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -48170,17 +48170,17 @@ vpn.persistent:no
vpn.timeout:0
<<<
-size: 555
+size: 560
location: clients/tests/test-client.py:test_004()/831
cmd: $NMCLI --mode multiline --terse -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -48192,17 +48192,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 565
+size: 570
location: clients/tests/test-client.py:test_004()/832
cmd: $NMCLI --mode multiline --terse -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -48214,16 +48214,16 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 426
+size: 424
location: clients/tests/test-client.py:test_004()/833
cmd: $NMCLI --mode multiline --terse dev s
lang: C
returncode: 0
-stdout: 280 bytes
+stdout: 278 bytes
>>>
DEVICE:wlan0
TYPE:wifi
-STATE:unavailable
+STATE:connected
CONNECTION:con-vpn-1
DEVICE:eth0
TYPE:ethernet
@@ -48243,16 +48243,16 @@ STATE:unavailable
CONNECTION:
<<<
-size: 436
+size: 434
location: clients/tests/test-client.py:test_004()/834
cmd: $NMCLI --mode multiline --terse dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 280 bytes
+stdout: 278 bytes
>>>
DEVICE:wlan0
TYPE:wifi
-STATE:unavailable
+STATE:connected
CONNECTION:con-vpn-1
DEVICE:eth0
TYPE:ethernet
@@ -48272,16 +48272,16 @@ STATE:unavailable
CONNECTION:
<<<
-size: 1134
+size: 1132
location: clients/tests/test-client.py:test_004()/835
cmd: $NMCLI --mode multiline --terse -f all dev status
lang: C
returncode: 0
-stdout: 976 bytes
+stdout: 974 bytes
>>>
DEVICE:wlan0
TYPE:wifi
-STATE:unavailable
+STATE:connected
IP4-CONNECTIVITY:unknown
IP6-CONNECTIVITY:unknown
DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
@@ -48326,16 +48326,16 @@ CON-UUID:
CON-PATH:
<<<
-size: 1144
+size: 1142
location: clients/tests/test-client.py:test_004()/836
cmd: $NMCLI --mode multiline --terse -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 976 bytes
+stdout: 974 bytes
>>>
DEVICE:wlan0
TYPE:wifi
-STATE:unavailable
+STATE:connected
IP4-CONNECTIVITY:unknown
IP6-CONNECTIVITY:unknown
DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
@@ -48380,18 +48380,18 @@ CON-UUID:
CON-PATH:
<<<
-size: 4552
+size: 4549
location: clients/tests/test-client.py:test_004()/837
cmd: $NMCLI --mode multiline --terse dev show
lang: C
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -48419,7 +48419,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -48445,7 +48445,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -48526,18 +48526,18 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 4562
+size: 4559
location: clients/tests/test-client.py:test_004()/838
cmd: $NMCLI --mode multiline --terse dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -48565,7 +48565,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -48591,7 +48591,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -48672,12 +48672,12 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 12980
+size: 13000
location: clients/tests/test-client.py:test_004()/839
cmd: $NMCLI --mode multiline --terse -f all dev show
lang: C
returncode: 0
-stdout: 12822 bytes
+stdout: 12842 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -48690,13 +48690,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -48708,7 +48708,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -48798,7 +48798,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -48816,7 +48816,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -48866,7 +48866,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -48884,7 +48884,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -48941,7 +48941,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49037,7 +49037,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49096,12 +49096,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 13026
+size: 13046
location: clients/tests/test-client.py:test_004()/840
cmd: $NMCLI --mode multiline --terse -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 12858 bytes
+stdout: 12878 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49114,13 +49114,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49132,7 +49132,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -49222,7 +49222,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49240,7 +49240,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -49290,7 +49290,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49308,7 +49308,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -49365,7 +49365,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49461,7 +49461,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49520,18 +49520,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 894
+size: 893
location: clients/tests/test-client.py:test_004()/841
cmd: $NMCLI --mode multiline --terse dev show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -49553,18 +49553,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 904
+size: 903
location: clients/tests/test-client.py:test_004()/842
cmd: $NMCLI --mode multiline --terse dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -49586,12 +49586,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3000
+size: 3004
location: clients/tests/test-client.py:test_004()/843
cmd: $NMCLI --mode multiline --terse -f all dev show wlan0
lang: C
returncode: 0
-stdout: 2837 bytes
+stdout: 2841 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49604,13 +49604,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49622,7 +49622,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -49696,12 +49696,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3037
+size: 3041
location: clients/tests/test-client.py:test_004()/844
cmd: $NMCLI --mode multiline --terse -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2864 bytes
+stdout: 2868 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49714,13 +49714,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49732,7 +49732,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -49806,12 +49806,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1329
+size: 1333
location: clients/tests/test-client.py:test_004()/845
cmd: $NMCLI --mode multiline --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49824,13 +49824,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49855,12 +49855,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1339
+size: 1343
location: clients/tests/test-client.py:test_004()/846
cmd: $NMCLI --mode multiline --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49873,13 +49873,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49904,12 +49904,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1329
+size: 1333
location: clients/tests/test-client.py:test_004()/847
cmd: $NMCLI --mode multiline --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49922,13 +49922,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -49953,12 +49953,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1339
+size: 1343
location: clients/tests/test-client.py:test_004()/848
cmd: $NMCLI --mode multiline --terse -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -49971,13 +49971,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -50612,12 +50612,12 @@ DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-size: 3003
+size: 3007
location: clients/tests/test-client.py:test_004()/863
cmd: $NMCLI --mode multiline --terse -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 2837 bytes
+stdout: 2841 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -50630,13 +50630,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -50648,7 +50648,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -50722,12 +50722,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3040
+size: 3044
location: clients/tests/test-client.py:test_004()/864
cmd: $NMCLI --mode multiline --terse -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2864 bytes
+stdout: 2868 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -50740,13 +50740,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -50758,7 +50758,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -50832,18 +50832,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 907
+size: 906
location: clients/tests/test-client.py:test_004()/865
cmd: $NMCLI --mode multiline --terse -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -50865,18 +50865,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 917
+size: 916
location: clients/tests/test-client.py:test_004()/866
cmd: $NMCLI --mode multiline --terse -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -50898,12 +50898,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3062
+size: 3066
location: clients/tests/test-client.py:test_004()/867
cmd: $NMCLI --mode multiline --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 2758 bytes
+stdout: 2762 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -50916,13 +50916,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -50934,7 +50934,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -51005,12 +51005,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3099
+size: 3103
location: clients/tests/test-client.py:test_004()/868
cmd: $NMCLI --mode multiline --terse -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2785 bytes
+stdout: 2789 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -51023,13 +51023,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -51041,7 +51041,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -51220,12 +51220,12 @@ connection.type:802-11-wireless
connection.interface-name:
<<<
-size: 2626
+size: 2631
location: clients/tests/test-client.py:test_004()/873
cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -51314,7 +51314,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51334,12 +51334,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2636
+size: 2641
location: clients/tests/test-client.py:test_004()/874
cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -51428,7 +51428,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51448,12 +51448,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2626
+size: 2631
location: clients/tests/test-client.py:test_004()/875
cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
lang: C
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -51542,7 +51542,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51562,12 +51562,12 @@ VPN.CFG[2]:key2 = val2
VPN.CFG[3]:key3 = val3
<<<
-size: 2636
+size: 2641
location: clients/tests/test-client.py:test_004()/876
cmd: $NMCLI --mode multiline --terse --color yes con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 2457 bytes
+stdout: 2462 bytes
>>>
connection.id:con-vpn-1
connection.uuid:UUID-con-vpn-1-REPLACED-REPLACED-REP
@@ -51656,7 +51656,7 @@ proxy.pac-script:
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51892,17 +51892,17 @@ vpn.persistent:no
vpn.timeout:0
<<<
-size: 567
+size: 572
location: clients/tests/test-client.py:test_004()/881
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL con s con-vpn-1
lang: C
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51914,17 +51914,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 577
+size: 582
location: clients/tests/test-client.py:test_004()/882
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL con s con-vpn-1
lang: pl_PL.UTF-8
returncode: 0
-stdout: 388 bytes
+stdout: 393 bytes
>>>
GENERAL.NAME:con-vpn-1
GENERAL.UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.DEVICES:wlan0
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.STATE:activated
GENERAL.DEFAULT:no
GENERAL.DEFAULT6:no
@@ -51936,17 +51936,17 @@ GENERAL.ZONE:
GENERAL.MASTER-PATH:
<<<
-size: 598
+size: 600
location: clients/tests/test-client.py:test_004()/883
cmd: $NMCLI --mode multiline --terse --color yes dev s
lang: C
returncode: 0
-stdout: 440 bytes
+stdout: 442 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-STATE:unavailable
-CONNECTION:con-vpn-1
+DEVICE:wlan0
+TYPE:wifi
+STATE:connected
+CONNECTION:con-vpn-1
DEVICE:eth0
TYPE:ethernet
STATE:unavailable
@@ -51965,17 +51965,17 @@ STATE:unavailable
CONNECTION:
<<<
-size: 608
+size: 610
location: clients/tests/test-client.py:test_004()/884
cmd: $NMCLI --mode multiline --terse --color yes dev s
lang: pl_PL.UTF-8
returncode: 0
-stdout: 440 bytes
+stdout: 442 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-STATE:unavailable
-CONNECTION:con-vpn-1
+DEVICE:wlan0
+TYPE:wifi
+STATE:connected
+CONNECTION:con-vpn-1
DEVICE:eth0
TYPE:ethernet
STATE:unavailable
@@ -51994,22 +51994,22 @@ STATE:unavailable
CONNECTION:
<<<
-size: 1507
+size: 1514
location: clients/tests/test-client.py:test_004()/885
cmd: $NMCLI --mode multiline --terse --color yes -f all dev status
lang: C
returncode: 0
-stdout: 1336 bytes
+stdout: 1343 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-STATE:unavailable
-IP4-CONNECTIVITY:unknown
-IP6-CONNECTIVITY:unknown
-DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
-CONNECTION:con-vpn-1
-CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE:wlan0
+TYPE:wifi
+STATE:connected
+IP4-CONNECTIVITY:unknown
+IP6-CONNECTIVITY:unknown
+DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
+CONNECTION:con-vpn-1
+CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
DEVICE:eth0
TYPE:ethernet
STATE:unavailable
@@ -52048,22 +52048,22 @@ CON-UUID:
CON-PATH:
<<<
-size: 1517
+size: 1524
location: clients/tests/test-client.py:test_004()/886
cmd: $NMCLI --mode multiline --terse --color yes -f all dev status
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1336 bytes
+stdout: 1343 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-STATE:unavailable
-IP4-CONNECTIVITY:unknown
-IP6-CONNECTIVITY:unknown
-DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
-CONNECTION:con-vpn-1
-CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
-CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
+DEVICE:wlan0
+TYPE:wifi
+STATE:connected
+IP4-CONNECTIVITY:unknown
+IP6-CONNECTIVITY:unknown
+DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
+CONNECTION:con-vpn-1
+CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
+CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
DEVICE:eth0
TYPE:ethernet
STATE:unavailable
@@ -52102,18 +52102,18 @@ CON-UUID:
CON-PATH:
<<<
-size: 4564
+size: 4561
location: clients/tests/test-client.py:test_004()/887
cmd: $NMCLI --mode multiline --terse --color yes dev show
lang: C
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -52141,7 +52141,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -52167,7 +52167,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -52248,18 +52248,18 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 4574
+size: 4571
location: clients/tests/test-client.py:test_004()/888
cmd: $NMCLI --mode multiline --terse --color yes dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 4402 bytes
+stdout: 4399 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -52287,7 +52287,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -52313,7 +52313,7 @@ GENERAL.MTU:0
GENERAL.STATE:20 (unavailable)
GENERAL.CONNECTION:
GENERAL.CON-PATH:
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -52394,12 +52394,12 @@ IP6.DNS[1]:2001:a::2934:bd66:550d:ec19
IP6.DOMAIN[1]:sear6.fo.x.y
<<<
-size: 13316
+size: 13336
location: clients/tests/test-client.py:test_004()/889
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show
lang: C
returncode: 0
-stdout: 13146 bytes
+stdout: 13166 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -52412,13 +52412,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52430,7 +52430,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -52520,7 +52520,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52538,7 +52538,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -52588,7 +52588,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52606,7 +52606,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -52663,7 +52663,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52759,7 +52759,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52818,12 +52818,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 13362
+size: 13382
location: clients/tests/test-client.py:test_004()/890
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show
lang: pl_PL.UTF-8
returncode: 0
-stdout: 13182 bytes
+stdout: 13202 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -52836,13 +52836,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52854,7 +52854,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -52944,7 +52944,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -52962,7 +52962,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.49.34/22
IP4.ADDRESS[2]:192.168.135.86/19
IP4.GATEWAY:
@@ -53012,7 +53012,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/eth1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:eth1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53030,7 +53030,7 @@ CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
INTERFACE-FLAGS.LOWER-UP:yes
INTERFACE-FLAGS.CARRIER:no
-WIRED-PROPERTIES.CARRIER:off
+WIRED-PROPERTIES.CARRIER:on
IP4.ADDRESS[1]:192.168.127.210/25
IP4.GATEWAY:192.168.88.4
IP4.ROUTE[1]:dst = 192.168.222.35/19, nh = 192.168.170.142, mt = 3609264321
@@ -53087,7 +53087,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53183,7 +53183,7 @@ GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan1
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan1
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53242,18 +53242,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 906
+size: 905
location: clients/tests/test-client.py:test_004()/891
cmd: $NMCLI --mode multiline --terse --color yes dev show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -53275,18 +53275,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 916
+size: 915
location: clients/tests/test-client.py:test_004()/892
cmd: $NMCLI --mode multiline --terse --color yes dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -53308,12 +53308,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3255
+size: 3259
location: clients/tests/test-client.py:test_004()/893
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show wlan0
lang: C
returncode: 0
-stdout: 3080 bytes
+stdout: 3084 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53326,13 +53326,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53344,7 +53344,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -53418,12 +53418,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3292
+size: 3296
location: clients/tests/test-client.py:test_004()/894
cmd: $NMCLI --mode multiline --terse --color yes -f all dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3107 bytes
+stdout: 3111 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53436,13 +53436,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53454,7 +53454,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -53528,12 +53528,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 1341
+size: 1345
location: clients/tests/test-client.py:test_004()/895
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53546,13 +53546,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53577,12 +53577,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1351
+size: 1355
location: clients/tests/test-client.py:test_004()/896
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53595,13 +53595,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53626,12 +53626,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1341
+size: 1345
location: clients/tests/test-client.py:test_004()/897
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: C
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53644,13 +53644,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53675,12 +53675,12 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 1351
+size: 1355
location: clients/tests/test-client.py:test_004()/898
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,GENERAL.HWADDR,WIFI-PROPERTIES dev show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 1131 bytes
+stdout: 1135 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -53693,13 +53693,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -53724,16 +53724,16 @@ WIFI-PROPERTIES.MESH:no
WIFI-PROPERTIES.IBSS-RSN:no
<<<
-size: 682
+size: 685
location: clients/tests/test-client.py:test_004()/899
cmd: $NMCLI --mode multiline --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: C
returncode: 0
-stdout: 501 bytes
+stdout: 504 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
+DEVICE:wlan0
+TYPE:wifi
+DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
DEVICE:eth0
TYPE:ethernet
DBUS-PATH:/org/freedesktop/NetworkManager/Devices/1
@@ -53748,16 +53748,16 @@ TYPE:wifi
DBUS-PATH:/org/freedesktop/NetworkManager/Devices/5
<<<
-size: 692
+size: 695
location: clients/tests/test-client.py:test_004()/900
cmd: $NMCLI --mode multiline --terse --color yes -f DEVICE,TYPE,DBUS-PATH dev
lang: pl_PL.UTF-8
returncode: 0
-stdout: 501 bytes
+stdout: 504 bytes
>>>
-DEVICE:wlan0
-TYPE:wifi
-DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
+DEVICE:wlan0
+TYPE:wifi
+DBUS-PATH:/org/freedesktop/NetworkManager/Devices/3
DEVICE:eth0
TYPE:ethernet
DBUS-PATH:/org/freedesktop/NetworkManager/Devices/1
@@ -54334,12 +54334,12 @@ DBUS-PATH:/org/freedesktop/NetworkManager/AccessPoint/2
<<<
-size: 3258
+size: 3262
location: clients/tests/test-client.py:test_004()/913
cmd: $NMCLI --mode multiline --terse --color yes -f ALL device show wlan0
lang: C
returncode: 0
-stdout: 3080 bytes
+stdout: 3084 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -54352,13 +54352,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -54370,7 +54370,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -54444,12 +54444,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3295
+size: 3299
location: clients/tests/test-client.py:test_004()/914
cmd: $NMCLI --mode multiline --terse --color yes -f ALL device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3107 bytes
+stdout: 3111 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -54462,13 +54462,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -54480,7 +54480,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
INTERFACE-FLAGS.UP:yes
@@ -54554,18 +54554,18 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 919
+size: 918
location: clients/tests/test-client.py:test_004()/915
cmd: $NMCLI --mode multiline --terse --color yes -f COMMON device show wlan0
lang: C
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -54587,18 +54587,18 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 929
+size: 928
location: clients/tests/test-client.py:test_004()/916
cmd: $NMCLI --mode multiline --terse --color yes -f COMMON device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 739 bytes
+stdout: 738 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.CONNECTION:con-vpn-1
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:192.168.228.18/32
@@ -54620,12 +54620,12 @@ IP6.DOMAIN[5]:sear6.foo3.bar
IP6.DOMAIN[6]:sear6.foo4.bar
<<<
-size: 3317
+size: 3321
location: clients/tests/test-client.py:test_004()/917
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: C
returncode: 0
-stdout: 3001 bytes
+stdout: 3005 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -54638,13 +54638,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -54656,7 +54656,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
@@ -54727,12 +54727,12 @@ CONNECTIONS.AVAILABLE-CONNECTION-PATHS:/org/freedesktop/NetworkManager/Settings/
CONNECTIONS.AVAILABLE-CONNECTIONS[1]:UUID-con-xx1-REPLACED-REPLACED-REPLA | con-xx1
<<<
-size: 3354
+size: 3358
location: clients/tests/test-client.py:test_004()/918
cmd: $NMCLI --mode multiline --terse --color yes -f GENERAL,CAPABILITIES,WIFI-PROPERTIES,AP,WIRED-PROPERTIES,WIMAX-PROPERTIES,NSP,IP4,DHCP4,IP6,DHCP6,BOND,TEAM,BRIDGE,VLAN,BLUETOOTH,CONNECTIONS device show wlan0
lang: pl_PL.UTF-8
returncode: 0
-stdout: 3028 bytes
+stdout: 3032 bytes
>>>
GENERAL.DEVICE:wlan0
GENERAL.TYPE:wifi
@@ -54745,13 +54745,13 @@ GENERAL.DRIVER-VERSION:
GENERAL.FIRMWARE-VERSION:
GENERAL.HWADDR:13:E0:74:85:7C:D9
GENERAL.MTU:0
-GENERAL.STATE:20 (unavailable)
+GENERAL.STATE:100 (connected)
GENERAL.REASON:0 (No reason given)
GENERAL.IP4-CONNECTIVITY:0 (unknown)
GENERAL.IP6-CONNECTIVITY:0 (unknown)
GENERAL.UDI:/sys/devices/virtual/wlan0
GENERAL.PATH:
-GENERAL.IP-IFACE:
+GENERAL.IP-IFACE:wlan0
GENERAL.IS-SOFTWARE:no
GENERAL.NM-MANAGED:yes
GENERAL.AUTOCONNECT:yes
@@ -54763,7 +54763,7 @@ GENERAL.CON-UUID:UUID-con-vpn-1-REPLACED-REPLACED-REP
GENERAL.CON-PATH:/org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.METERED:unknown
CAPABILITIES.CARRIER-DETECT:no
-CAPABILITIES.SPEED:unknown
+CAPABILITIES.SPEED:21 Mb/s
CAPABILITIES.IS-SOFTWARE:no
CAPABILITIES.SRIOV:no
WIFI-PROPERTIES.WEP:yes
diff --git a/clients/tests/test-client.py b/clients/tests/test-client.py
index 062fc9f354..01d50e1af6 100755
--- a/clients/tests/test-client.py
+++ b/clients/tests/test-client.py
@@ -562,9 +562,7 @@ class NMStubServer:
def setProperty(self, path, propname, value, iface_name=None):
if iface_name is None:
iface_name = ""
- self.op_SetProperties(
- [(path, [(iface_name, [(propname, value),]),]),]
- )
+ self.op_SetProperties([(path, [(iface_name, [(propname, value)])])])
###############################################################################
@@ -1161,7 +1159,7 @@ class TestNmcli(NmTestBase):
self.srv.op_AddObj("WifiAp", device="wlan1")
self.srv.addConnection(
- {"connection": {"type": "802-3-ethernet", "id": "con-1",},}
+ {"connection": {"type": "802-3-ethernet", "id": "con-1"}}
)
@nm_test
diff --git a/configure.ac b/configure.ac
index 8483dd7f98..f86cda69ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,8 +7,8 @@ dnl - add corresponding NM_VERSION_x_y_z macros in
dnl "shared/nm-version-macros.h.in"
dnl - update number in meson.build
m4_define([nm_major_version], [1])
-m4_define([nm_minor_version], [28])
-m4_define([nm_micro_version], [0])
+m4_define([nm_minor_version], [29])
+m4_define([nm_micro_version], [5])
m4_define([nm_version],
[nm_major_version.nm_minor_version.nm_micro_version])
diff --git a/contrib/debian/REQUIRED_PACKAGES b/contrib/debian/REQUIRED_PACKAGES
index 3ed6350c56..65807d0d4b 100755
--- a/contrib/debian/REQUIRED_PACKAGES
+++ b/contrib/debian/REQUIRED_PACKAGES
@@ -35,6 +35,7 @@ install \
intltool \
iproute2 \
iptables \
+ libaudit-dev \
libcurl4-gnutls-dev \
libdbus-1-dev \
libgcrypt11-dev \
@@ -65,10 +66,13 @@ install \
ppp-dev \
python-dbus \
python-gi \
+ python-setuptools \
python-software-properties \
python3-dbus \
python3-gi \
python3-pip \
+ python3-setuptools \
+ udev \
uuid-dev \
valgrind \
\
diff --git a/contrib/fedora/REQUIRED_PACKAGES b/contrib/fedora/REQUIRED_PACKAGES
index 18ba364199..54793c86e0 100755
--- a/contrib/fedora/REQUIRED_PACKAGES
+++ b/contrib/fedora/REQUIRED_PACKAGES
@@ -40,10 +40,12 @@ else
fi
install \
+ /usr/bin/xargs \
ModemManager-devel \
ModemManager-glib-devel \
audit-libs-devel \
bluez-libs-devel \
+ clang \
dbus-devel \
dbus-x11 \
dhclient \
@@ -85,6 +87,7 @@ install \
# some packages don't exist in certain distributions. Install them one-by-one, and ignore errors.
install_ignore_missing \
+ black \
dbus-python \
iproute-tc \
libasan \
diff --git a/contrib/fedora/rpm/NetworkManager.conf b/contrib/fedora/rpm/NetworkManager.conf
index 6ee4797d4e..b362fd0a82 100644
--- a/contrib/fedora/rpm/NetworkManager.conf
+++ b/contrib/fedora/rpm/NetworkManager.conf
@@ -22,7 +22,7 @@
# the previous one.
[main]
-#plugins=ifcfg-rh
+#plugins=keyfile,ifcfg-rh
[logging]
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index 8e866a8e5a..c5d3696eac 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -46,6 +46,22 @@
###############################################################################
+%if "x__BCOND_DEFAULT_DEBUG__" == "x1" || "x__BCOND_DEFAULT_DEBUG__" == "x0"
+%global bcond_default_debug __BCOND_DEFAULT_DEBUG__
+%else
+%global bcond_default_debug 0
+%endif
+
+%if "x__BCOND_DEFAULT_TEST__" == "x1" || "x__BCOND_DEFAULT_TEST__" == "x0"
+%global bcond_default_test __BCOND_DEFAULT_TEST__
+%else
+%if 0%{?rhel} >= 9
+%global bcond_default_test 1
+%else
+%global bcond_default_test 0
+%endif
+%endif
+
%bcond_with meson
%bcond_without adsl
%bcond_without bluetooth
@@ -57,8 +73,16 @@
%bcond_without nmtui
%bcond_without nm_cloud_setup
%bcond_without regen_docs
+%if %{bcond_default_debug}
+%bcond_without debug
+%else
%bcond_with debug
+%endif
+%if %{bcond_default_test}
+%bcond_without test
+%else
%bcond_with test
+%endif
%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9
%bcond_without lto
%else
diff --git a/contrib/fedora/rpm/build.sh b/contrib/fedora/rpm/build.sh
index d84dc44729..0e3b82c7e6 100755
--- a/contrib/fedora/rpm/build.sh
+++ b/contrib/fedora/rpm/build.sh
@@ -23,6 +23,8 @@
# SOURCE_SYSCTL_RP_FILTER_REDHAT=
# SIGN_SOURCE=
# DO_RELEASE=
+# BCOND_DEFAULT_DEBUG=
+# BCOND_DEFAULT_TEST=
die() {
echo "$*" >&2
@@ -48,6 +50,15 @@ coerce_bool() {
esac
}
+in_set() {
+ local v="$1"
+ shift
+ for v2; do
+ test "$v" == "$v2" && return 0
+ done
+ return 1
+}
+
abs_path() {
local F="$1"
@@ -157,10 +168,15 @@ LOG "SOURCE_CONFIG_CONNECTIVITY_REDHAT=$SOURCE_CONFIG_CONNECTIVITY_REDHAT"
LOG "SOURCE_SYSCTL_RP_FILTER_REDHAT=$SOURCE_SYSCTL_RP_FILTER_REDHAT"
LOG "BUILDTYPE=$BUILDTYPE"
LOG "NM_RPMBUILD_ARGS=$NM_RPMBUILD_ARGS"
+LOG "BCOND_DEFAULT_DEBUG=$BCOND_DEFAULT_DEBUG"
+LOG "BCOND_DEFAULT_TEST=$BCOND_DEFAULT_TEST"
LOG ""
LOG "UUID=$UUID"
LOG "BASEDIR=$TEMP"
+in_set "$BCOND_DEFAULT_DEBUG" "" 0 1 || die "Invalid value for \$BCOND_DEFAULT_DEBUG: \"$BCOND_DEFAULT_DEBUG\""
+in_set "$BCOND_DEFAULT_TEST" "" 0 1 || die "Invalid value for \$BCOND_DEFAULT_TEST: \"$BCOND_DEFAULT_TEST\""
+
ln -snf "$TEMPBASE" ./latest0
ln "$BUILDLOG" "$TEMPBASE/build.log"
rm -f "$BUILDLOG"
@@ -186,6 +202,8 @@ sed -e "s/__VERSION__/$VERSION/g" \
-e "s/__COMMIT_FULL__/$COMMIT_FULL/g" \
-e "s/__SNAPSHOT__/$SNAPSHOT/g" \
-e "s/__SOURCE1__/$(basename "$SOURCE")/g" \
+ -e "s/__BCOND_DEFAULT_DEBUG__/$BCOND_DEFAULT_DEBUG/g" \
+ -e "s/__BCOND_DEFAULT_TEST__/$BCOND_DEFAULT_TEST/g" \
"$SPECFILE" |
sed -e "/^__CHANGELOG__$/ \
{
diff --git a/contrib/fedora/rpm/build_clean.sh b/contrib/fedora/rpm/build_clean.sh
index e7afdb4f24..b26316be22 100755
--- a/contrib/fedora/rpm/build_clean.sh
+++ b/contrib/fedora/rpm/build_clean.sh
@@ -25,8 +25,18 @@ usage() {
echo " -W|--without \$OPTION: pass --without \$OPTION to rpmbuild. For example --without debug"
echo " -s|--snapshot TEXT: use TEXT as the snapshot version for the new package (overwrites \$NM_BUILD_SNAPSHOT environment)"
echo " -r|--release: built a release tarball (this option must be alone)"
+ echo " --default-for-debug \$OPTION: set the default for "debug" option in the generated spec file"
+ echo " --default-for-test \$OPTION: set the default for "test" option in the generated spec file"
}
+in_set() {
+ local v="$1"
+ shift
+ for v2; do
+ test "$v" == "$v2" && return 0
+ done
+ return 1
+}
ORIGDIR="$(readlink -f "$PWD")"
SCRIPTDIR="$(dirname "$(readlink -f "$0")")"
@@ -45,6 +55,8 @@ WITH_LIST=()
SOURCE_FROM_GIT=0
SNAPSHOT="$NM_BUILD_SNAPSHOT"
DO_RELEASE=0
+unset BCOND_DEFAULT_DEBUG
+unset BCOND_DEFAULT_TEST
ADD_WITH_TEST=1
@@ -94,17 +106,49 @@ while [[ $# -gt 0 ]]; do
-w|--with)
[[ $# -gt 0 ]] || die "Missing argument to $A"
WITH_LIST=("${WITH_LIST[@]}" "--with" "$1")
- if [[ "$1" == test ]]; then
- ADD_WITH_TEST=0
- fi
+ case "$1" in
+ debug)
+ [[ -z ${BCOND_DEFAULT_DEBUG+.} ]] && BCOND_DEFAULT_DEBUG=1
+ ;;
+ test)
+ ADD_WITH_TEST=0
+ [[ -z ${BCOND_DEFAULT_TEST+.} ]] && BCOND_DEFAULT_TEST=1
+ ;;
+ esac
shift
;;
-W|--without)
[[ $# -gt 0 ]] || die "Missing argument to $A"
WITH_LIST=("${WITH_LIST[@]}" "--without" "$1")
- if [[ "$1" == test ]]; then
- ADD_WITH_TEST=0
- fi
+ case "$1" in
+ debug)
+ [[ -z ${BCOND_DEFAULT_DEBUG+.} ]] && BCOND_DEFAULT_DEBUG=0
+ ;;
+ test)
+ ADD_WITH_TEST=0
+ [[ -z ${BCOND_DEFAULT_TEST+.} ]] && BCOND_DEFAULT_TEST=0
+ ;;
+ esac
+ shift
+ ;;
+ --no-auto-with-test)
+ # by default, the script adds "-w test" (unless the command line contains
+ # "-w test" or "-W test"). This flags allows to suppress that automatism.
+ # It's really only useful to test the spec file's internal default for the
+ # "test" option. Otherwise, you can always just explicitly select "-w test"
+ # or "-W test".
+ ADD_WITH_TEST=0
+ ;;
+ --default-for-debug)
+ [[ $# -gt 0 ]] || die "Missing argument to $A"
+ in_set "$1" "" 0 1 || die "invalid argument $A \"$1\""
+ BCOND_DEFAULT_DEBUG="$1"
+ shift
+ ;;
+ --default-for-test)
+ [[ $# -gt 0 ]] || die "Missing argument to $A"
+ in_set "$1" "" 0 1 || die "invalid argument $A \"$1\""
+ BCOND_DEFAULT_TEST="$1"
shift
;;
*)
@@ -176,6 +220,8 @@ export BUILDTYPE
export NM_RPMBUILD_ARGS="${WITH_LIST[@]}"
export SNAPSHOT
export DO_RELEASE
+export BCOND_DEFAULT_DEBUG="$BCOND_DEFAULT_DEBUG"
+export BCOND_DEFAULT_TEST="$BCOND_DEFAULT_TEST"
"$SCRIPTDIR"/build.sh
diff --git a/contrib/fedora/rpm/release.sh b/contrib/fedora/rpm/release.sh
index e049ecbe8c..2dd0845288 100755
--- a/contrib/fedora/rpm/release.sh
+++ b/contrib/fedora/rpm/release.sh
@@ -6,17 +6,20 @@
#
# There are 6 modes:
#
-# - "devel" : on master branch to tag "1.25.2-dev"
+# - "devel" : on master branch to tag a devel release (e.g. "1.25.2-dev").
# - "rc1" : the first release candidate on "master" branch which branches off
-# "nm-1-26" branch. The tag is "1.26-rc1" with version number 1.25.90.
-# - "rc" : further release candidates on RC branch "nm-1-26". For example
-# "1.26-rc2" with version number 1.25.91.
-# - "major" : on stable branch nm-1-26 to release 1.26.0 followed by 1.26.1-dev.
-# You should do a "major-post" release right after.
+# a new "nm-1-X" branch (e.g. tag "1.26-rc1" (1.25.90) and branch
+# off "nm-1-26"). On master this also bumps the version number
+# and creates a new devel release (e.g. "1.27.0-dev").
+# - "rc" : further release candidates on RC branch (e.g. from "nm-1-26" branch
+# tag "1.26-rc2" with version number 1.25.91).
+# - "major" : on stable branch do a major release (e.g. on "nm-1-26" branch
+# release "1.26.0", followed by "1.26.1-dev").
+# You should do a "major-post" release right a "major" release.
# - "major-post": after a "major" release, merge the release branch with master and
-# do another devel snapshot on master.
-# - "minor" : on a stable branch nm-1-26 to do minor release 1.26.4 and bump
-# to "1.26.5-dev".
+# do another devel snapshot on master (e.g. do "1.27.1-dev" release).
+# - "minor" : on a stable branch do a minor release (e.g. "1.26.4" on "nm-1-26"
+# branch and bump to "1.26.5-dev").
#
# Requisites:
#
@@ -25,7 +28,7 @@
# * Run in a "clean" environment, i.e. no unusual environment variables set, on a recent
# Fedora, with suitable dependencies installed.
#
-# * First, ensure that you have ssh keys for master.gnome.org installed (and ssh-agent running)
+# * First, ensure that you have ssh keys for "master.gnome.org" installed (and ssh-agent running).
# Also, ensure you have a GPG key that you want to use for signing. Also, have gpg-agent running
# and possibly configure `git config --get user.signingkey` for the proper key.
#
@@ -52,7 +55,7 @@ echo_color() {
print_usage() {
echo "Usage:"
- echo " $BASH_SOURCE [devel|rc1|rc|major|major-post|minor] [--no-test] [--no-find-backports] [--no-cleanup] [--allow-local-branches]"
+ echo " $BASH_SOURCE [devel|rc1|rc|major|major-post|minor] [--no-test] [--no-find-backports] [--no-cleanup] [--allow-local-branches] [--no-check-gitlab] [--no-check-news]"
}
die_help() {
@@ -88,7 +91,7 @@ parse_version() {
local MIN="$(sed -n '1,20 s/^m4_define(\[nm_minor_version\], \[\([0-9]\+\)\])$/\1/p' ./configure.ac)"
local MIC="$(sed -n '1,20 s/^m4_define(\[nm_micro_version\], \[\([0-9]\+\)\])$/\1/p' ./configure.ac)"
- re='^[0-9][1-9]* [0-9][1-9]* [0-9][1-9]*$'
+ re='^(0|[1-9][0-9]*) (0|[1-9][0-9]*) (0|[1-9][0-9]*)$'
[[ "$MAJ $MIN $MIC" =~ $re ]] || return 1
echo "$MAJ $MIN $MIC"
}
@@ -109,6 +112,31 @@ git_same_ref() {
[ "$a" = "$b" ]
}
+check_gitlab_pipeline() {
+ local BRANCH="$1"
+ local SHA="$2"
+ local PIPELINE_ID
+
+ PIPELINE_ID="$(curl --no-progress-meter "https://gitlab.freedesktop.org/api/v4/projects/411/pipelines?ref=$BRANCH&sha=$SHA&order_by=id" 2>/dev/null | jq '.[0].id')"
+ if ! [[ $PIPELINE_ID =~ [0-9]+ ]] ; then
+ echo "Cannot find pipeline for branch $BRANCH. Check \"https://gitlab.freedesktop.org/NetworkManager/NetworkManager/pipelines?page=1&scope=branches&ref=$BRANCH\""
+ return 1
+ fi
+
+ PIPELINE_STATUSES="$(curl --no-progress-meter "https://gitlab.freedesktop.org/api/v4/projects/411/pipelines/$PIPELINE_ID/jobs" 2>/dev/null | jq '.[].status')"
+
+ if ! echo "$PIPELINE_STATUSES" | grep -q '^"success"$' ; then
+ echo "Cannot find successful jobs for branch $BRANCH. Check \"https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/pipelines/$PIPELINE_ID\""
+ return 1
+ fi
+ if echo "$PIPELINE_STATUSES" | grep -q -v '^"success"$' ; then
+ echo "Seems not all jobs for $BRANCH ran (or were successfull). Check \"https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/pipelines/$PIPELINE_ID\""
+ return 1
+ fi
+
+ return 0
+}
+
set_version_number_autotools() {
sed -i \
-e '1,20 s/^m4_define(\[nm_major_version\], \[\([0-9]\+\)\])$/m4_define([nm_major_version], ['"$1"'])/' \
@@ -128,6 +156,23 @@ set_version_number() {
set_version_number_meson "$@"
}
+check_news() {
+ local mode="$1"
+ shift
+ local ver_arr=("$@")
+
+ case "$mode" in
+ major|minor)
+ if git grep -q 'NOT RECOMMENDED FOR PRODUCTION USE' -- ./NEWS ; then
+ return 1
+ fi
+ ;;
+ *)
+ ;;
+ esac
+ return 0
+}
+
DO_CLEANUP=1
CLEANUP_CHECKOUT_BRANCH=
CLEANUP_REFS=()
@@ -157,6 +202,8 @@ DRY_RUN=1
FIND_BACKPORTS=1
ALLOW_LOCAL_BRANCHES=0
HELP_AND_EXIT=1
+CHECK_GITLAB=1
+CHECK_NEWS=1
while [ "$#" -ge 1 ]; do
A="$1"
shift
@@ -177,6 +224,12 @@ while [ "$#" -ge 1 ]; do
# that differ from upstream. Set this flag to override that check.
ALLOW_LOCAL_BRANCHES=1
;;
+ --no-check-gitlab)
+ CHECK_GITLAB=0
+ ;;
+ --no-check-news)
+ CHECK_NEWS=0
+ ;;
--help|-h)
die_help
;;
@@ -207,6 +260,7 @@ TMP="$(LANG=C git clean -ndx)" || die "git clean -ndx failed"
test -z "$TMP" || die "git working directory is not clean? (git clean -ndx)"
CUR_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
+CUR_HEAD="$(git rev-parse HEAD)"
TMP_BRANCH=release-branch
if [ "$CUR_BRANCH" = master ]; then
@@ -269,7 +323,7 @@ git fetch "$ORIGIN" || die "git fetch failed"
if [ "$ALLOW_LOCAL_BRANCHES" != 1 ]; then
git_same_ref "$CUR_BRANCH" "refs/heads/$CUR_BRANCH" || die "Current branch $CUR_BRANCH is not a branch??"
- git_same_ref "$CUR_BRANCH" "refs/remotes/$ORIGIN/$CUR_BRANCH" || die "Current branch $CUR_BRANCH seems not up to date with refs/remotes/$ORIGIN/$CUR_BRANCH. Git pull?"
+ git_same_ref "$CUR_BRANCH" "refs/remotes/$ORIGIN/$CUR_BRANCH" || die "Current branch $CUR_BRANCH seems not up to date with refs/remotes/$ORIGIN/$CUR_BRANCH. Git pull or --allow-local-branches?"
fi
NEWER_BRANCHES=()
@@ -284,14 +338,14 @@ if [ "$CUR_BRANCH" != master ]; then
fi
if [ "$ALLOW_LOCAL_BRANCHES" != 1 ]; then
git_same_ref "$b" "refs/heads/$b" || die "branch $b is not a branch??"
- git_same_ref "$b" "refs/remotes/$ORIGIN/$b" || die "branch $b seems not up to date with refs/remotes/$ORIGIN/$b. Git pull?"
+ git_same_ref "$b" "refs/remotes/$ORIGIN/$b" || die "branch $b seems not up to date with refs/remotes/$ORIGIN/$b. Git pull or --allow-local-branches?"
fi
NEWER_BRANCHES+=("refs/heads/$b")
done
b=master
if [ "$ALLOW_LOCAL_BRANCHES" != 1 ]; then
git_same_ref "$b" "refs/heads/$b" || die "branch $b is not a branch??"
- git_same_ref "$b" "refs/remotes/$ORIGIN/$b" || die "branch $b seems not up to date with refs/remotes/$ORIGIN/$b. Git pull?"
+ git_same_ref "$b" "refs/remotes/$ORIGIN/$b" || die "branch $b seems not up to date with refs/remotes/$ORIGIN/$b. Git pull or --allow-local-branches?"
fi
fi
@@ -304,15 +358,29 @@ if [ "$ALLOW_LOCAL_BRANCHES" != 1 ]; then
cmp <(git show origin/master:contrib/fedora/rpm/release.sh) "$BASH_SOURCE" || die "$BASH_SOURCE is not identical to \`git show origin/master:contrib/fedora/rpm/release.sh\`"
fi
+if ! check_news "$RELEASE_MODE" "@{VERSION_ARR[@]}" ; then
+ if [ "$CHECK_NEWS" == 1 ]; then
+ die "NEWS file needs update to mention stable release (skip check with --no-check-news)"
+ fi
+ echo "WARNING: NEWS file needs update to mention stable release (test skipped with --no-check-news)"
+fi
+
if [ $FIND_BACKPORTS = 1 ]; then
- git show "$ORIGIN/automation:contrib/rh-utils/find-backports" > ./.git/nm-find-backports \
+ git show "$ORIGIN/master:contrib/scripts/find-backports" > ./.git/nm-find-backports \
&& chmod +x ./.git/nm-find-backports \
- || die "cannot get contrib/rh-utils/find-backports"
+ || die "cannot get contrib/scripts/find-backports"
TMP="$(./.git/nm-find-backports "$CUR_BRANCH" master "${NEWER_BRANCHES[@]}" 2>/dev/null)" || die "nm-find-backports failed"
test -z "$TMP" || die "nm-find-backports returned patches that need to be backported (ignore with --no-find-backports): ./.git/nm-find-backports \"$CUR_BRANCH\" master ${NEWER_BRANCHES[@]}"
fi
+if [ $CHECK_GITLAB = 1 ]; then
+ if ! check_gitlab_pipeline "$CUR_BRANCH" "$CUR_HEAD" ; then
+ echo "Check the pipelines for branch \"$CUR_BRANCH\" at https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/pipelines/"
+ die "It seems not all gitlab-ci jobs were running/succeeding. Skip this check with --no-check-gitlab"
+ fi
+fi
+
BRANCHES=()
BUILD_TAG=
@@ -469,14 +537,26 @@ if [ "$RELEASE_MODE" = rc1 ]; then
git checkout -B "$CUR_BRANCH" "$TMP_BRANCH" || die "cannot checkout $CUR_BRANCH"
fi
-do_command git push "$ORIGIN" "${BRANCHES[@]}" || die "failed to to push branches ${BRANCHES[@]} to $ORIGIN"
+if ! [ "$DRY_RUN" = 0 ]; then
+ ssh master.gnome.org true || die "failed to \`ssh master.gnome.org\`"
+fi
for r in "${RELEASE_FILES[@]}"; do
do_command rsync -va --append-verify -P "/tmp/$r" master.gnome.org: || die "failed to rsync \"/tmp/$r\""
+done
+
+do_command git push "$ORIGIN" "${BRANCHES[@]}" || die "failed to to push branches ${BRANCHES[@]} to $ORIGIN"
+
+for r in "${RELEASE_FILES[@]}"; do
do_command ssh master.gnome.org ftpadmin install --unattended "$r" || die "ftpadmin install failed"
done
+CLEANUP_CHECKOUT_BRANCH=
if [ "$DRY_RUN" = 0 ]; then
CLEANUP_REFS=()
- CLEANUP_CHECKOUT_BRANCH=
+ git branch -D "$TMP_BRANCH"
+else
+ H="$(git rev-parse "$CUR_BRANCH")"
+ git checkout -B "$CUR_BRANCH" "$CUR_HEAD" || die "cannot reset $CUR_BRANCH to $CUR_HEAD"
+ echo "delete reference. Restore with $(echo_color 36 -n git checkout -B "\"$CUR_BRANCH\"" "$H")"
fi
diff --git a/contrib/scripts/checkpatch-feature-branch.sh b/contrib/scripts/checkpatch-feature-branch.sh
index 72e5903dae..c46fcd4b5a 100755
--- a/contrib/scripts/checkpatch-feature-branch.sh
+++ b/contrib/scripts/checkpatch-feature-branch.sh
@@ -13,19 +13,26 @@ if printf '%s' "$HEAD" | grep -q '\.\.'; then
# Check the explicitly specified range from the argument.
REFS=( $(git log --reverse --format='%H' "$HEAD") ) || die "not a valid range (HEAD is $HEAD)"
else
- BASE_REF="refs/remotes/origin/"
+ BASE_REF="refs/remotes/origin"
+ NM_UPSTREAM_REMOTE=
if [ "$NM_CHECKPATCH_FETCH_UPSTREAM" == 1 ]; then
- git remote add nm-upstream https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
- git fetch nm-upstream || die "failure to fetch from https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git"
- BASE_REF="refs/remotes/nm-upstream/"
+ NM_UPSTREAM_REMOTE="nm-upstream-$(date '+%Y%m%d-%H%M%S')-$RANDOM"
+ git remote add "$NM_UPSTREAM_REMOTE" https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
+ BASE_REF="refs/remotes/$NM_UPSTREAM_REMOTE"
+ git fetch origin "$(git rev-parse "$HEAD")" --no-tags --unshallow
+ git fetch "$NM_UPSTREAM_REMOTE" \
+ --no-tags \
+ "refs/heads/master:$BASE_REF/master" \
+ "refs/heads/nm-*:$BASE_REF/nm-*" \
+ || die "failure to fetch from https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git"
fi
# the argument is only a single ref (or the default "HEAD").
# Find all commits that branch off one of the stable branches or master
# and lead to $HEAD. These are the commits of the feature branch.
- RANGES=( $(git show-ref | sed 's#^\(.*\) '"$BASE_REF"'\(master\|nm-1-[0-9]\+\)$#\1..'"$HEAD"'#p' -n) )
+ RANGES=( $(git show-ref | sed 's#^\(.*\) '"$BASE_REF/"'\(master\|nm-1-[0-9]\+\)$#\1..'"$HEAD"'#p' -n) )
[ "${#RANGES[@]}" != 0 ] || die "cannot detect git-ranges (HEAD is $(git rev-parse "$HEAD"))"
@@ -36,6 +43,10 @@ else
# stable nm-1-* branches. Just check the patch itself.
REFS=( "$HEAD" )
fi
+
+ if [ -n "$NM_UPSTREAM_REMOTE" ]; then
+ git remote remove "$NM_UPSTREAM_REMOTE"
+ fi
fi
SUCCESS=0
diff --git a/contrib/scripts/checkpatch.pl b/contrib/scripts/checkpatch.pl
index 40518c8e72..c702810e22 100755
--- a/contrib/scripts/checkpatch.pl
+++ b/contrib/scripts/checkpatch.pl
@@ -137,7 +137,7 @@ if ($is_patch) {
$check_line = 1;
$line = $_;
/^---$/ and $is_commit_message = 0;
- /^Fixes: *(.*)/ and check_commit ($1, 1);
+ /^(Reverts|Fixes): *(.*)/ and check_commit ($2, 1);
/This reverts commit/ and next;
/cherry picked from/ and next;
/\bcommit (.*)/ and check_commit ($1, 0);
@@ -188,7 +188,7 @@ complain ("Don't use space inside elvis operator ?:") if $line =~ /\?[\t ]+:/;
complain ("Don't add Emacs editor formatting hints to source files") if $line_no == 1 and $line =~ /-\*-.+-\*-/;
complain ("XXX marker are reserved for development while work-in-progress. Use TODO or FIXME comment instead?") if $line =~ /\bXXX\b/;
complain ("This gtk-doc annotation looks wrong") if $line =~ /\*.*\( *(transfer-(none|container|full)|allow none) *\) *(:|\()/;
-complain ("Prefer nm_assert() or g_return*() to g_assert*()") if $line =~ /g_assert/ and not $filename =~ /\/tests\//;
+complain ("Prefer nm_assert() or g_return*() to g_assert*()") if $line =~ /g_assert/ and (not $filename =~ /\/tests\//) and (not $filename =~ /\/nm-test-/);
complain ("Use gs_free_error with GError variables") if $line =~ /\bgs_free\b +GError *\*/;
#complain ("Use spaces instead of tabs") if $line =~ /\t/;
diff --git a/contrib/scripts/find-backports b/contrib/scripts/find-backports
new file mode 100755
index 0000000000..7f1b8ab8dd
--- /dev/null
+++ b/contrib/scripts/find-backports
@@ -0,0 +1,336 @@
+#!/usr/bin/env python3
+
+import subprocess
+import collections
+import os
+import sys
+import re
+import pprint
+
+
+FNULL = open(os.devnull, "w")
+pp = pprint.PrettyPrinter(indent=4)
+
+
+def print_err(s):
+ print(s, file=sys.stderr)
+
+
+def die(s):
+ print_err(s)
+ sys.exit(1)
+
+
+def memoize(f):
+ memo = {}
+
+ def helper(x):
+ if x not in memo:
+ memo[x] = f(x)
+ return memo[x]
+
+ return helper
+
+
+def re_bin(r):
+ return r.encode("utf8")
+
+
+def _keys_to_dict(itr):
+ d = collections.OrderedDict()
+ for c in itr:
+ d[c] = None
+ return d
+
+
+@memoize
+def git_ref_exists(ref):
+ try:
+ out = subprocess.check_output(
+ ["git", "rev-parse", "--verify", str(ref) + "^{commit}"], stderr=FNULL
+ )
+ except subprocess.CalledProcessError:
+ return None
+ try:
+ o = out.decode("ascii").strip()
+ if len(o) == 40:
+ return o
+ except Exception:
+ pass
+ raise Exception("git-rev-parse for '%s' returned unexpected output %s" % (ref, out))
+
+
+@memoize
+def git_get_head_name(ref):
+ out = subprocess.check_output(
+ ["git", "rev-parse", "--symbolic-full-name", str(ref)], stderr=FNULL
+ )
+ return out.decode("utf-8").strip()
+
+
+def git_merge_base(a, b):
+ out = subprocess.check_output(["git", "merge-base", str(a), str(b)], stderr=FNULL)
+ out = out.decode("ascii").strip()
+ assert git_ref_exists(out)
+ return out
+
+
+def git_all_commits_grep(rnge, grep=None):
+ if grep:
+ grep = ["--grep=%s" % (str(grep))]
+ notes = ["-c", "notes.displayref=refs/notes/bugs"]
+ else:
+ grep = []
+ notes = []
+ out = subprocess.check_output(
+ ["git"]
+ + notes
+ + ["log", "--pretty=%H", "--notes", "--reverse"]
+ + grep
+ + [str(rnge)],
+ stderr=FNULL,
+ )
+ return list([x for x in out.decode("ascii").split("\n") if x])
+
+
+def git_logg(commits):
+ commits = list(commits)
+ if not commits:
+ return ""
+ out = subprocess.check_output(
+ [
+ "git",
+ "log",
+ "--no-show-signature",
+ "--no-walk",
+ "--pretty=format:%Cred%h%Creset - %Cgreen(%ci)%Creset [%C(yellow)%an%Creset] %s%C(yellow)%d%Creset",
+ "--abbrev-commit",
+ "--date=local",
+ ]
+ + list([str(c) for c in commits]),
+ stderr=FNULL,
+ )
+ return out.decode("utf-8").strip()
+
+
+@memoize
+def git_all_commits(rnge):
+ return git_all_commits_grep(rnge)
+
+
+def git_commit_sorted(commits):
+ commits = list(commits)
+ if not commits:
+ return []
+ out = subprocess.check_output(
+ ["git", "log", "--no-walk", "--pretty=%H", "--reverse"]
+ + list([str(x) for x in commits]),
+ stderr=FNULL,
+ )
+ out = out.decode("ascii")
+ return list([x for x in out.split("\n") if x])
+
+
+@memoize
+def git_ref_commit_body(ref):
+ return subprocess.check_output(
+ [
+ "git",
+ "-c",
+ "notes.displayref=refs/notes/bugs",
+ "log",
+ "-n1",
+ "--pretty=%B%n%N",
+ str(ref),
+ ],
+ stderr=FNULL,
+ )
+
+
+@memoize
+def git_ref_commit_body_get_fixes(ref):
+ body = git_ref_commit_body(ref)
+ result = []
+ for mo in re.finditer(re_bin("\\b[fF]ixes: *([0-9a-z]+)\\b"), body):
+ c = mo.group(1).decode("ascii")
+ h = git_ref_exists(c)
+ if h:
+ result.append(h)
+ return result
+
+
+@memoize
+def git_ref_commit_body_get_cherry_picked_one(ref):
+ ref = git_ref_exists(ref)
+ if not ref:
+ return None
+ body = git_ref_commit_body(ref)
+ result = None
+ for r in [
+ re_bin("\(cherry picked from commit ([0-9a-z]+)\)"),
+ re_bin("\\bIgnore-Backport: *([0-9a-z]+)\\b"),
+ ]:
+ for mo in re.finditer(r, body):
+ c = mo.group(1).decode("ascii")
+ h = git_ref_exists(c)
+ if h:
+ if not result:
+ result = [h]
+ else:
+ result.append(h)
+ return result
+
+
+@memoize
+def git_ref_commit_body_get_cherry_picked_recurse(ref):
+ ref = git_ref_exists(ref)
+ if not ref:
+ return None
+
+ def do_recurse(result, ref):
+ result2 = git_ref_commit_body_get_cherry_picked_one(ref)
+ if result2:
+ extra = list([h2 for h2 in result2 if h2 not in result])
+ if extra:
+ result.extend(extra)
+ for h2 in extra:
+ do_recurse(result, h2)
+
+ result = []
+ do_recurse(result, ref)
+ return result
+
+
+def git_commits_annotate_fixes(rnge):
+ commits = git_all_commits(rnge)
+ c_dict = _keys_to_dict(commits)
+ for c in git_all_commits_grep(rnge, grep="[Ff]ixes:"):
+ ff = git_ref_commit_body_get_fixes(c)
+ if ff:
+ c_dict[c] = ff
+ return c_dict
+
+
+def git_commits_annotate_cherry_picked(rnge):
+ commits = git_all_commits(rnge)
+ c_dict = _keys_to_dict(commits)
+ for c in git_all_commits_grep(ref_head, grep="cherry picked from commit"):
+ ff = git_ref_commit_body_get_cherry_picked_recurse(c)
+ if ff:
+ c_dict[c] = ff
+ return c_dict
+
+
+if __name__ == "__main__":
+ if len(sys.argv) <= 1:
+ ref_head0 = "HEAD"
+ else:
+ ref_head0 = sys.argv[1]
+
+ ref_head = git_ref_exists(ref_head0)
+ if not ref_head:
+ die('Ref "%s" does not exist' % (ref_head0))
+
+ ref_upstreams = []
+ if len(sys.argv) <= 2:
+ head_name = git_get_head_name(ref_head0)
+ match = False
+ if head_name:
+ match = re.match("^refs/(heads|remotes/[^/]*)/nm-1-([0-9]+)$", head_name)
+ if match:
+ i = int(match.group(2))
+ while True:
+ i += 2
+ r = "nm-1-" + str(i)
+ if not git_ref_exists(r):
+ r = "refs/remotes/origin/nm-1-" + str(i)
+ if not git_ref_exists(r):
+ break
+ ref_upstreams.append(r)
+ ref_upstreams.append("master")
+
+ if not ref_upstreams:
+ if len(sys.argv) <= 2:
+ ref_upstreams = ["master"]
+ else:
+ ref_upstreams = list(sys.argv[2:])
+
+ for h in ref_upstreams:
+ if not git_ref_exists(h):
+ die('Upstream ref "%s" does not exist' % (h))
+
+ print_err("Check %s (%s)" % (ref_head0, ref_head))
+ print_err("Upstream refs: %s" % (ref_upstreams))
+
+ print_err('Check patches of "%s"...' % (ref_head))
+ own_commits_list = git_all_commits(ref_head)
+ own_commits_cherry_picked = git_commits_annotate_cherry_picked(ref_head)
+
+ cherry_picks_all = collections.OrderedDict()
+ for c, cherry_picked in own_commits_cherry_picked.items():
+ if cherry_picked:
+ for c2 in cherry_picked:
+ l = cherry_picks_all.get(c2)
+ if not l:
+ cherry_picks_all[c2] = [c]
+ else:
+ l.append(c)
+
+ own_commits_cherry_picked_flat = set()
+ for c, p in own_commits_cherry_picked.items():
+ own_commits_cherry_picked_flat.add(c)
+ if p:
+ own_commits_cherry_picked_flat.update(p)
+
+ # print(">>> own_commits_cherry_picked")
+ # pp.pprint(own_commits_cherry_picked)
+
+ # print(">>> cherry_picks_all")
+ # pp.pprint(cherry_picks_all)
+
+ # find all commits on the upstream branches that fix another commit.
+ fixing_commits = {}
+ for ref_upstream in ref_upstreams:
+ ref_str = ref_head + ".." + ref_upstream
+ print_err('Check upstream patches "%s"...' % (ref_str))
+ for c, fixes in git_commits_annotate_fixes(ref_str).items():
+ # print(">>> test %s ==> %s" % (c, fixes))
+ if not fixes:
+ # print(">>> test %s ==> SKIP" % (c))
+ continue
+ if c in cherry_picks_all:
+ # commit 'c' is already backported. Skip it.
+ # print(">>> in cherry_picks_all")
+ continue
+ for f in fixes:
+ if f not in own_commits_cherry_picked_flat:
+ # commit "c" fixes commit "f", but this is not one of our own commits
+ # and not interesting.
+ # print(">>> fixes %s not in own_commits_cherry_picked" % (f))
+ continue
+ # print(">>> take %s (fixes %s)" % (c, fixes))
+ fixing_commits[c] = fixes
+ break
+
+ extra = collections.OrderedDict(
+ [(c, git_ref_commit_body_get_cherry_picked_recurse(c)) for c in fixing_commits]
+ )
+ extra2 = []
+ for c in extra:
+ is_back = False
+ for e_v in extra.values():
+ if c in e_v:
+ is_back = True
+ break
+ if not is_back:
+ extra2.append(c)
+
+ commits_good = list(fixing_commits)
+ commits_good = extra2
+
+ commits_good = git_commit_sorted(commits_good)
+
+ print_err(git_logg(commits_good))
+
+ for c in reversed(commits_good):
+ print("%s" % (c))
diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh
index 52dffe2672..4d46ddb018 100755
--- a/contrib/scripts/nm-ci-run.sh
+++ b/contrib/scripts/nm-ci-run.sh
@@ -67,12 +67,6 @@ case "$CI" in
""|"true"|"default"|"gitlab")
CI=default
;;
- "travis")
- _WITH_WERROR=0
- _WITH_LIBTEAM="$_FALSE"
- _WITH_DOCS="$_FALSE"
- _WITH_SYSTEMD_LOGIND="$_FALSE"
- ;;
*)
die "invalid \$CI \"$CI\""
;;
@@ -172,12 +166,6 @@ run_autotools() {
export NM_TEST_CLIENT_CHECK_L10N=1
- if [ "$CI" == travis ]; then
- # travis is known to generate the settings doc differently.
- # Don't compare.
- export NMTST_NO_CHECK_SETTINGS_DOCS=yes
- fi
-
if ! make check -j 6 -k ; then
_print_test_logs "first-test"
diff --git a/data/NetworkManager-wait-online.service.in b/data/NetworkManager-wait-online.service.in
index 26a8f25362..fda23916d5 100644
--- a/data/NetworkManager-wait-online.service.in
+++ b/data/NetworkManager-wait-online.service.in
@@ -26,7 +26,7 @@ RemainAfterExit=yes
# gets delayed too long, then the solution is usually not to decrease
# the timeout, but to fix your setup so that the connected state
# gets reached earlier.
-Environment=NM_ONLINE_TIMEOUT=30
+Environment=NM_ONLINE_TIMEOUT=60
[Install]
WantedBy=network-online.target
diff --git a/docs/api/Makefile.am b/docs/api/Makefile.am
index dfa3210c68..4f370449a2 100644
--- a/docs/api/Makefile.am
+++ b/docs/api/Makefile.am
@@ -126,9 +126,19 @@ setup-build.stamp:
####################################
-EXTRA_DIST += version.xml.in settings-spec.xsl meson.build $(GENERATED_FILES)
-CLEANFILES += html/* tmpl/* xml/* \
- NetworkManager-sections.txt \
- NetworkManager-overrides.txt
+EXTRA_DIST += \
+ version.xml.in \
+ settings-spec.xsl \
+ meson.build \
+ $(GENERATED_FILES) \
+ $(NULL)
-CLEANFILES += settings-spec.xml
+CLEANFILES += \
+ html/* \
+ tmpl/* \
+ xml/* \
+ NetworkManager-overrides.txt \
+ NetworkManager-sections.txt \
+ NetworkManager.actions \
+ settings-spec.xml \
+ $(NULL)
diff --git a/docs/libnm/Makefile.am b/docs/libnm/Makefile.am
index b637f79835..5328bd6586 100644
--- a/docs/libnm/Makefile.am
+++ b/docs/libnm/Makefile.am
@@ -100,16 +100,19 @@ GTKDOC_LIBS = \
# include common portion ...
include $(top_srcdir)/gtk-doc.make
-EXTRA_DIST += version.xml.in meson.build
+EXTRA_DIST += \
+ version.xml.in \
+ meson.build \
+ $(NULL)
CLEANFILES += \
- libnm-sections.txt \
- libnm-overrides.txt \
html/* \
tmpl/* \
- xml/*
-
-DISTCLEANFILES = libnm.actions
+ xml/* \
+ libnm-overrides.txt \
+ libnm-sections.txt \
+ libnm.actions \
+ $(NULL)
if GTK_DOC_BUILD_HTML
check-local-gtk-doc-patch:
diff --git a/docs/libnm/libnm-docs.xml b/docs/libnm/libnm-docs.xml
index 47b1fa1c08..3ff07c37bf 100644
--- a/docs/libnm/libnm-docs.xml
+++ b/docs/libnm/libnm-docs.xml
@@ -324,6 +324,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-setting-ethtool.xml"/>
<xi:include href="xml/nm-setting-generic.xml"/>
<xi:include href="xml/nm-setting-gsm.xml"/>
+ <xi:include href="xml/nm-setting-hostname.xml"/>
<xi:include href="xml/nm-setting-infiniband.xml"/>
<xi:include href="xml/nm-setting-ip4-config.xml"/>
<xi:include href="xml/nm-setting-ip6-config.xml"/>
@@ -338,6 +339,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-setting-ovs-dpdk.xml"/>
<xi:include href="xml/nm-setting-ovs-patch.xml"/>
<xi:include href="xml/nm-setting-ovs-port.xml"/>
+ <xi:include href="xml/nm-setting-ovs-external-ids.xml"/>
<xi:include href="xml/nm-setting-ppp.xml"/>
<xi:include href="xml/nm-setting-pppoe.xml"/>
<xi:include href="xml/nm-setting-proxy.xml"/>
@@ -348,6 +350,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-setting-team.xml"/>
<xi:include href="xml/nm-setting-tun.xml"/>
<xi:include href="xml/nm-setting-user.xml"/>
+ <xi:include href="xml/nm-setting-veth.xml"/>
<xi:include href="xml/nm-setting-vlan.xml"/>
<xi:include href="xml/nm-setting-vpn.xml"/>
<xi:include href="xml/nm-setting-vrf.xml"/>
@@ -386,6 +389,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-device-ppp.xml"/>
<xi:include href="xml/nm-device-team.xml"/>
<xi:include href="xml/nm-device-tun.xml"/>
+ <xi:include href="xml/nm-device-veth.xml"/>
<xi:include href="xml/nm-device-vlan.xml"/>
<xi:include href="xml/nm-device-vrf.xml"/>
<xi:include href="xml/nm-device-vxlan.xml"/>
diff --git a/examples/python/dbus/add-wifi-psk-connection.py b/examples/python/dbus/add-wifi-psk-connection.py
index 66d42e8204..ca8b03008e 100755
--- a/examples/python/dbus/add-wifi-psk-connection.py
+++ b/examples/python/dbus/add-wifi-psk-connection.py
@@ -11,11 +11,11 @@ s_con = dbus.Dictionary(
)
s_wifi = dbus.Dictionary(
- {"ssid": dbus.ByteArray("best-wifi".encode("utf-8")), "mode": "infrastructure",}
+ {"ssid": dbus.ByteArray("best-wifi".encode("utf-8")), "mode": "infrastructure"}
)
s_wsec = dbus.Dictionary(
- {"key-mgmt": "wpa-psk", "auth-alg": "open", "psk": "super-secret-password",}
+ {"key-mgmt": "wpa-psk", "auth-alg": "open", "psk": "super-secret-password"}
)
s_ip4 = dbus.Dictionary({"method": "auto"})
diff --git a/examples/python/gi/nm-keyfile.py b/examples/python/gi/nm-keyfile.py
new file mode 100755
index 0000000000..21d70e0bef
--- /dev/null
+++ b/examples/python/gi/nm-keyfile.py
@@ -0,0 +1,139 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: LGPL-2.1+
+
+import sys
+import os
+
+import gi
+
+gi.require_version("NM", "1.0")
+from gi.repository import NM, GLib
+
+###############################################################################
+
+
+def kf_load_from_file(filename):
+ kf = GLib.KeyFile.new()
+ kf.load_from_file(filename, GLib.KeyFileFlags.NONE)
+ return kf
+
+
+def kf_to_string(kf):
+ d, l = kf.to_data()
+ return d
+
+
+def debug(message):
+ if os.getenv("DEBUG") == "1":
+ print(">>> %s" % (message))
+
+
+###############################################################################
+
+filename = sys.argv[1]
+base_dir = os.path.dirname(os.path.realpath(filename))
+
+kf = kf_load_from_file(filename)
+
+print('> keyfile "%s":' % (filename))
+print(">>\n%s\n<<" % (kf_to_string(kf)))
+
+###############################################################################
+
+
+def kf_handler_read(keyfile, connection, handler_type, handler_data, user_data):
+ kf_handler_read_cnt = globals().get("kf_handler_read_cnt", 0) + 1
+ globals()["kf_handler_read_cnt"] = kf_handler_read_cnt
+
+ [kf_group, kf_key, cur_setting, cur_property] = handler_data.get_context()
+
+ debug("kf_handler_read(%s): keyfile=%r" % (kf_handler_read_cnt, keyfile))
+ debug("kf_handler_read(%s): connection=%r" % (kf_handler_read_cnt, connection))
+ debug("kf_handler_read(%s): handler-type=%r" % (kf_handler_read_cnt, handler_type))
+ debug("kf_handler_read(%s): handler-data=%r" % (kf_handler_read_cnt, handler_data))
+ debug("kf_handler_read(%s): user-data=%r" % (kf_handler_read_cnt, user_data))
+ debug("kf_handler_read(%s): kf-group=%r" % (kf_handler_read_cnt, kf_group))
+ debug("kf_handler_read(%s): kf-key=%r" % (kf_handler_read_cnt, kf_key))
+ debug("kf_handler_read(%s): kf-setting=%r" % (kf_handler_read_cnt, cur_setting))
+ debug("kf_handler_read(%s): kf-property=%r" % (kf_handler_read_cnt, cur_property))
+
+ if handler_type == NM.KeyfileHandlerType.WARN:
+ [message, severity] = handler_data.warn_get()
+ debug('parse-warning: <%s> = "%s"' % (severity, message))
+ print("> warning: %s" % (message))
+ return False
+
+ if handler_type == NM.KeyfileHandlerType.WRITE_CERT:
+ # just to show how to abort the parsing. This event won't happen
+ # for read.
+ handler_data.fail_with_error(
+ GLib.GError.new_literal(
+ NM.ConnectionError.quark(), "hallo1", NM.ConnectionError.MISSINGPROPERTY
+ )
+ )
+
+ # don't handle unknown handler types.
+ return False
+
+
+try:
+ print("parse keyfile...")
+ c = NM.keyfile_read(kf, base_dir, NM.KeyfileHandlerFlags.NONE, kf_handler_read, 42)
+except Exception as e:
+ print("parsing failed: %r" % (e))
+ raise
+
+verify_failure = None
+try:
+ c.verify()
+except Exception as e:
+ verify_failure = e.message
+
+print(
+ 'parsing succeeded: "%s" (%s)%s'
+ % (
+ c.get_id(),
+ c.get_uuid(),
+ " (invalid: " + verify_failure + ")" if verify_failure is not None else "",
+ )
+)
+
+
+###############################################################################
+
+
+def kf_handler_write(connection, keyfile, handler_type, handler_data, user_data):
+ kf_handler_write_cnt = globals().get("kf_handler_write_cnt", 0) + 1
+ globals()["kf_handler_write_cnt"] = kf_handler_write_cnt
+
+ [kf_group, kf_key, cur_setting, cur_property] = handler_data.get_context()
+
+ debug("kf_handler_write(%s): keyfile=%r" % (kf_handler_write_cnt, keyfile))
+ debug("kf_handler_write(%s): connection=%r" % (kf_handler_write_cnt, connection))
+ debug(
+ "kf_handler_write(%s): handler-type=%r" % (kf_handler_write_cnt, handler_type)
+ )
+ debug(
+ "kf_handler_write(%s): handler-data=%r" % (kf_handler_write_cnt, handler_data)
+ )
+ debug("kf_handler_write(%s): user-data=%r" % (kf_handler_write_cnt, user_data))
+ debug("kf_handler_write(%s): kf-group=%r" % (kf_handler_write_cnt, kf_group))
+ debug("kf_handler_write(%s): kf-key=%r" % (kf_handler_write_cnt, kf_key))
+ debug("kf_handler_write(%s): kf-setting=%r" % (kf_handler_write_cnt, cur_setting))
+ debug("kf_handler_write(%s): kf-property=%r" % (kf_handler_write_cnt, cur_property))
+
+ if handler_type == NM.KeyfileHandlerType.WRITE_CERT:
+ return False
+ return False
+
+
+try:
+ print("")
+ print("write keyfile...")
+ kf2 = NM.keyfile_write(c, NM.KeyfileHandlerFlags.NONE, kf_handler_write, 43)
+except Exception as e:
+ print("write failed: %r" % (e))
+ raise
+
+print("persisted again:")
+print(">>\n%s\n<<" % (kf_to_string(kf2)))
diff --git a/examples/python/gi/ovs-external-ids.py b/examples/python/gi/ovs-external-ids.py
new file mode 100755
index 0000000000..12c3d294fc
--- /dev/null
+++ b/examples/python/gi/ovs-external-ids.py
@@ -0,0 +1,663 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2017, 2020 Red Hat, Inc.
+#
+
+#
+# set and show OVS external-ids for a connection:
+#
+
+import sys
+import os
+import re
+import pprint
+import subprocess
+
+import gi
+
+gi.require_version("NM", "1.0")
+from gi.repository import GLib, NM
+
+###############################################################################
+
+MODE_GET = "get"
+MODE_SET = "set"
+MODE_APPLY = "apply"
+
+
+def memoize0(f):
+ result = []
+
+ def helper():
+ if len(result) == 0:
+ result.append(f())
+ return result[0]
+
+ return helper
+
+
+def memoize(f):
+ memo = {}
+
+ def helper(x):
+ if x not in memo:
+ memo[x] = f(x)
+ return memo[x]
+
+ return helper
+
+
+def pr(v):
+ pprint.pprint(v, indent=4, depth=5, width=60)
+
+
+@memoize0
+def is_libnm_debug():
+ return os.getenv("LIBNM_CLIENT_DEBUG") is not None
+
+
+@memoize0
+def can_sudo():
+ try:
+ return (
+ subprocess.run(
+ ["sudo", "-n", "true"],
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ ).returncode
+ == 0
+ )
+ except:
+ return False
+
+
+def _print(msg=""):
+ if is_libnm_debug():
+ # we want to use the same logging mechanism as libnm's debug
+ # logging with "LIBNM_CLIENT_DEBUG=trace,stdout".
+ NM.utils_print(0, msg + "\n")
+ return
+ print(msg)
+
+
+def mainloop_run(timeout_msec=0, mainloop=None):
+ if mainloop is None:
+ mainloop = GLib.MainLoop()
+
+ timeout_id = None
+ timeout_reached = []
+
+ if timeout_msec > 0:
+
+ def _timeout_cb(unused):
+ # it can happen that the caller already quit the mainloop
+ # otherwise. In that case, we don't want to signal a timeout.
+ if mainloop.is_running():
+ timeout_reached.append(1)
+ mainloop.quit()
+ return True
+
+ timeout_id = GLib.timeout_add(timeout_msec, _timeout_cb, None)
+
+ mainloop.run()
+ if timeout_id:
+ GLib.source_remove(timeout_id)
+ return not timeout_reached
+
+
+###############################################################################
+
+
+def connection_update2(remote_connection, connection):
+
+ mainloop = GLib.MainLoop()
+ result_error = []
+
+ def cb(c, result):
+ try:
+ c.update2_finish(result)
+ except Exception as e:
+ result_error.append(e)
+ mainloop.quit()
+
+ remote_connection.update2(
+ connection.to_dbus(NM.ConnectionSerializationFlags.ALL),
+ NM.SettingsUpdate2Flags.NO_REAPPLY,
+ None,
+ None,
+ cb,
+ )
+
+ mainloop_run(mainloop=mainloop)
+
+ if result_error:
+ raise result_error[0]
+
+
+def device_get_applied_connection(device):
+ mainloop = GLib.MainLoop()
+ rr = []
+
+ def cb(c, result):
+ try:
+ con, version_id = c.get_applied_connection_finish(result)
+ except Exception as e:
+ rr.append(e)
+ else:
+ rr.append(con)
+ rr.append(version_id)
+ mainloop.quit()
+
+ device.get_applied_connection_async(0, None, cb)
+
+ mainloop_run(mainloop=mainloop)
+
+ if len(rr) == 1:
+ raise rr[0]
+ return rr[0], rr[1]
+
+
+def device_reapply(device, connection, version_id):
+
+ mainloop = GLib.MainLoop()
+ result_error = []
+
+ def cb(d, result):
+ try:
+ d.reapply_finish(result)
+ except Exception as e:
+ result_error.append(e)
+ mainloop.quit()
+
+ device.reapply_async(connection, version_id, 0, None, cb)
+
+ mainloop_run(mainloop=mainloop)
+
+ if len(result_error) == 1:
+ raise result_error[0]
+
+
+def ovs_print_external_ids(prefix):
+ if not can_sudo():
+ _print(prefix + ": not running as root and cannot call ovs-vsctl")
+ return
+
+ cmds = [["ovs-vsctl", "show"]]
+ for typ in ["Bridge", "Port", "Interface"]:
+ cmds += [["ovs-vsctl", "--columns=name,external-ids", "list", typ]]
+
+ out = ""
+ for cmd in cmds:
+ p = subprocess.run(cmd, stdout=subprocess.PIPE, check=True,)
+ out += p.stdout.decode("utf-8") + "\n"
+ out = "\n".join([prefix + s for s in out.split("\n")])
+ _print(out)
+
+
+###############################################################################
+
+
+def usage():
+ _print("%s g[et] PROFILE [ GETTER ]" % (sys.argv[0]))
+ _print("%s s[et] PROFILE SETTER [--test]" % (sys.argv[0]))
+ _print("%s a[pply] DEVICE SETTER [--test]" % (sys.argv[0]))
+ _print(
+ " PROFILE := [id | uuid | type] STRING | [ ~id | ~type ] REGEX_STRING | STRING"
+ )
+ _print(" DEVICE := [iface] STRING")
+ _print(" GETTER := ( KEY | ~REGEX_KEY ) [... GETTER]")
+ _print(" SETTER := ( + | - | -KEY | [+]KEY VALUE ) [... SETTER]")
+
+
+def die(msg, show_usage=False):
+ _print("FAILED: %s" % (msg))
+ if show_usage:
+ usage()
+ sys.exit(1)
+
+
+def die_usage(msg):
+ die(msg, show_usage=True)
+
+
+def parse_args(argv):
+ had_dash_dash = False
+ args = {
+ "mode": MODE_GET,
+ "select_arg": None,
+ "ids_arg": [],
+ "do_test": False,
+ }
+ i = 1
+ while i < len(argv):
+ a = argv[i]
+
+ if i == 1:
+ if a in ["s", "set"]:
+ args["mode"] = MODE_SET
+ elif a in ["g", "get"]:
+ args["mode"] = MODE_GET
+ elif a in ["a", "apply"]:
+ args["mode"] = MODE_APPLY
+ else:
+ die_usage("unexpected mode argument '%s'" % (a))
+ i += 1
+ continue
+
+ if a == "--test":
+ args["do_test"] = True
+ i += 1
+ continue
+
+ if args["select_arg"] is None:
+ if args["mode"] == MODE_APPLY:
+ possible_selects = ["iface"]
+ else:
+ possible_selects = ["id", "~id", "uuid", "type", "~type"]
+
+ if a in possible_selects:
+ if i + 1 >= len(argv):
+ die_usage("'%s' requires an argument'" % (a))
+ args["select_arg"] = (a, argv[i + 1])
+ i += 2
+ continue
+
+ if a == "*":
+ a = None
+ args["select_arg"] = ("*", a)
+ i += 1
+ continue
+
+ if args["mode"] == MODE_GET:
+ args["ids_arg"].append(a)
+ i += 1
+ continue
+
+ if not a:
+ die_usage("argument should specify a external-id but is empty string")
+
+ if a[0] == "-":
+ v = (a, None)
+ i += 1
+ elif a == "+":
+ v = (a, None)
+ i += 1
+ else:
+ if a[0] != "+":
+ a = "+" + a
+ if i + 1 >= len(argv):
+ die_usage("'%s' requires an argument'" % (a))
+ v = (a, argv[i + 1])
+ i += 2
+
+ args["ids_arg"].append(v)
+
+ if args["mode"] == MODE_SET:
+ if not args["ids_arg"]:
+ die_usage("Requires one or more external-ids to set or delete")
+
+ return args
+
+
+def device_to_str(device, show_type=False):
+ if show_type:
+ return "%s (%s)" % (device.get_iface(), device.get_type_desc())
+ return "%s" % (device.get_iface(),)
+
+
+def connection_to_str(connection, show_type=False):
+ if show_type:
+ return "%s (%s, %s)" % (
+ connection.get_id(),
+ connection.get_uuid(),
+ connection.get_connection_type(),
+ )
+ return "%s (%s)" % (connection.get_id(), connection.get_uuid())
+
+
+def devices_filter(devices, select_arg):
+ devices = list(sorted(devices, key=device_to_str))
+ if not select_arg:
+ return devices
+ # we preserve the order of the selected devices. And
+ # if devices are selected multiple times, we return
+ # them multiple times.
+ l = []
+ f = select_arg
+ for d in devices:
+ if f[0] == "iface":
+ if f[1] == d.get_iface():
+ l.append(d)
+ else:
+ assert f[0] == "*"
+ if f[1] is None:
+ l.append(d)
+ else:
+ if f[1] in [d.get_iface()]:
+ l.append(d)
+ return l
+
+
+def connections_filter(connections, select_arg):
+ connections = list(sorted(connections, key=connection_to_str))
+ if not select_arg:
+ return connections
+ # we preserve the order of the selected connections. And
+ # if connections are selected multiple times, we return
+ # them multiple times.
+ l = []
+ f = select_arg
+ for c in connections:
+ if f[0] == "id":
+ if f[1] == c.get_id():
+ l.append(c)
+ elif f[0] == "~id":
+ if re.match(f[1], c.get_id()):
+ l.append(c)
+ elif f[0] == "uuid":
+ if f[1] == c.get_uuid():
+ l.append(c)
+ elif f[0] == "type":
+ if f[1] == c.get_connection_type():
+ l.append(c)
+ elif f[0] == "~type":
+ if re.match(f[1], c.get_connection_type()):
+ l.append(c)
+ else:
+ assert f[0] == "*"
+ if f[1] is None:
+ l.append(c)
+ else:
+ if f[1] in [c.get_uuid(), c.get_id()]:
+ l.append(c)
+ return l
+
+
+def ids_select(ids, mode, ids_arg):
+ ids = list(ids)
+ if not ids_arg:
+ return (ids, [])
+
+ keys = set()
+ requested = []
+ for d in ids_arg:
+ if mode == MODE_GET:
+ if d[0] == "~":
+ r = re.compile(d[1:])
+ keys.update([k for k in ids if r.match(k)])
+ else:
+ keys.update([k for k in ids if k == d])
+ if d not in requested:
+ requested.append(d)
+ else:
+ assert mode in [MODE_SET, MODE_APPLY]
+ d2 = d[0]
+ assert d2[0] in ["-", "+"]
+ d3 = d2[1:]
+ if d3 in ids:
+ keys.add(d3)
+ return (list([k for k in ids if k in keys]), requested)
+
+
+def connection_print(connection, mode, ids_arg, dbus_path, prefix=""):
+ sett = connection.get_setting(NM.SettingOvsExternalIDs)
+
+ if sett is not None:
+ all_ids = list(sett.get_data_keys())
+ keys, requested = ids_select(all_ids, mode, ids_arg)
+ num_str = "%s" % (len(all_ids))
+ else:
+ keys = []
+ requested = []
+ num_str = "none"
+
+ _print(
+ "%s%s [%s]" % (prefix, connection_to_str(connection, show_type=True), num_str)
+ )
+ if dbus_path:
+ _print("%s %s" % (prefix, dbus_path))
+ if sett is not None:
+ dd = sett.get_property(NM.SETTING_OVS_EXTERNAL_IDS_DATA)
+ else:
+ dd = {}
+ for k in keys:
+ v = sett.get_data(k)
+ assert v is not None
+ assert v == dd.get(k, None)
+ _print('%s "%s" = "%s"' % (prefix, k, v))
+ for k in requested:
+ _print('%s "%s" = <unset>' % (prefix, k))
+
+
+def sett_update(connection, ids_arg):
+
+ sett = connection.get_setting(NM.SettingOvsExternalIDs)
+
+ for d in ids_arg:
+ op = d[0][0]
+ key = d[0][1:]
+ val = d[1]
+
+ oldval = None
+ if sett is not None:
+ oldval = sett.get_data(key)
+
+ if op == "-":
+ assert val is None
+ if key == "":
+ if sett is None:
+ _print(" DEL: setting (ovs-external-ids group was not present)")
+ else:
+ connection.remove_setting(NM.SettingOvsExternalIDs)
+ sett = None
+ _print(" DEL: setting")
+ continue
+
+ if sett is None:
+ _print(' DEL: "%s" (ovs-external-ids group was not present)' % (key))
+ continue
+ if oldval is None:
+ _print(' DEL: "%s" (id was unset)' % (key))
+ continue
+ _print(' DEL: "%s" (id was set to"%s")' % (key, oldval))
+ sett.set_data(key, None)
+ continue
+
+ if key == "":
+ assert val is None
+ if sett is None:
+ sett = NM.SettingOvsExternalIDs.new()
+ connection.add_setting(sett)
+ _print(" SET: setting (external-ids group was added)")
+ continue
+
+ _print(" SET: setting (external-ids group was present)")
+ continue
+
+ assert val is not None
+
+ if sett is None:
+ sett = NM.SettingOvsExternalIDs.new()
+ connection.add_setting(sett)
+ _print(
+ ' SET: "%s" = "%s" (external-ids group was not present)' % (key, val)
+ )
+ elif oldval is None:
+ _print(' SET: "%s" = "%s" (new)' % (key, val))
+ elif oldval != val:
+ _print(' SET: "%s" = "%s" (was "%s")' % (key, val, oldval))
+ else:
+ _print(' SET: "%s" = "%s" (unchanged)' % (key, val))
+ sett.set_data(key, val)
+
+
+def do_get(connections, ids_arg):
+ first_line = True
+ for c in connections:
+ if first_line:
+ first_line = False
+ else:
+ _print()
+ connection_print(c, MODE_GET, ids_arg, dbus_path=c.get_path())
+
+
+def do_set(nmc, connection, ids_arg, do_test):
+
+ remote_connection = connection
+ connection = NM.SimpleConnection.new_clone(remote_connection)
+
+ connection_print(
+ connection, MODE_SET, [], remote_connection.get_path(), prefix="BEFORE: "
+ )
+ _print()
+
+ sett_update(connection, ids_arg)
+
+ if do_test:
+ _print()
+ _print("Only show. Run without --test to set")
+ return
+
+ try:
+ connection_update2(remote_connection, connection)
+ except Exception as e:
+ _print()
+ _print("FAILURE to commit connection: %s" % (e))
+ return
+
+ # NMClient received the completion of Update2() call. It also received
+ # a property changed signal that the profile changed, and it is about
+ # to fetch the new value. However, that value is not yet here.
+ #
+ # libnm should provide a better API for this. For example, not signal
+ # completion of update2() until the profile was refetched. Or, indicate
+ # that the settings are dirty, so we would know how long to wait.
+ #
+ # Add an ugly workaround here and wait a bit.
+ _print()
+ _print("WORKAROUND: wait for connection to change")
+ mainloop_run(timeout_msec=500)
+
+ if remote_connection is not nmc.get_object_by_path(remote_connection.get_path()):
+ _print()
+ _print(
+ "Connection %s no longer exists after commit"
+ % (remote_connection.get_path())
+ )
+ return
+
+ _print()
+ connection_print(
+ remote_connection, MODE_SET, [], remote_connection.get_path(), prefix="AFTER: "
+ )
+
+ _print()
+ if remote_connection.compare(connection, NM.SettingCompareFlags.EXACT):
+ _print("resulting connection is as expected")
+ else:
+ _print("WARNING: resulting connection is not as expected")
+
+
+def do_apply(nmc, device, ids_arg, do_test):
+
+ try:
+ connection_orig, version_id = device_get_applied_connection(device)
+ except Exception as e:
+ _print(
+ 'failure to get applied connection for %s: %s"' % (device_to_str(device), e)
+ )
+ die("The device does not seem active? Nothing to reapply")
+
+ _print(
+ "REAPPLY device %s (%s) with connection %s (version-id = %s)"
+ % (
+ device_to_str(device),
+ NM.Object.get_path(device),
+ connection_to_str(connection_orig),
+ version_id,
+ )
+ )
+ _print()
+
+ ovs_print_external_ids("BEFORE-OVS-VSCTL: ")
+ _print()
+
+ connection = NM.SimpleConnection.new_clone(connection_orig)
+
+ connection_print(connection, MODE_APPLY, [], device.get_path(), prefix="BEFORE: ")
+ _print()
+
+ sett_update(connection, ids_arg)
+
+ if do_test:
+ _print()
+ _print("Only show. Run without --test to set")
+ return
+
+ _print()
+ _print("reapply...")
+
+ try:
+ device_reapply(device, connection, version_id)
+ except Exception as e:
+ _print()
+ _print("FAILURE to commit connection: %s" % (e))
+ return
+
+ try:
+ connection_after, version_id = device_get_applied_connection(device)
+ except Exception as e:
+ _print(
+ 'failure to get applied connection after reapply for device %s: %s"'
+ % (device_to_str(device), e)
+ )
+ die("FAILURE to get applied connection after reapply")
+
+ _print()
+ connection_print(connection, MODE_APPLY, [], device.get_path(), prefix="AFTER: ")
+ _print()
+
+ ovs_print_external_ids("AFTER-OVS-VSCTL: ")
+
+
+###############################################################################
+
+if __name__ == "__main__":
+
+ args = parse_args(sys.argv)
+
+ nmc = NM.Client.new(None)
+
+ if args["mode"] == MODE_APPLY:
+
+ devices = devices_filter(nmc.get_devices(), args["select_arg"])
+
+ if len(devices) != 1:
+ _print(
+ "To apply the external-ids of a device, exactly one connection must be selected. Instead, %s devices matched ([%s])"
+ % (len(devices), ", ".join([device_to_str(c) for c in devices]),)
+ )
+ die_usage("Select unique device to apply")
+ do_apply(nmc, devices[0], args["ids_arg"], do_test=args["do_test"])
+
+ else:
+
+ connections = connections_filter(nmc.get_connections(), args["select_arg"])
+
+ if args["mode"] == MODE_SET:
+ if len(connections) != 1:
+ _print(
+ "To set the external-ids of a connection, exactly one connection must be selected via id|uuid. Instead, %s connection matched ([%s])"
+ % (
+ len(connections),
+ ", ".join([connection_to_str(c) for c in connections]),
+ )
+ )
+ die_usage("Select unique connection to set")
+ do_set(nmc, connections[0], args["ids_arg"], do_test=args["do_test"])
+ else:
+ if len(connections) < 1:
+ _print("No connection selected for printing the external ids")
+ die_usage("Select connection to get")
+ do_get(connections, args["ids_arg"])
diff --git a/libnm-core/meson.build b/libnm-core/meson.build
index da74fb0439..e3a5dc8445 100644
--- a/libnm-core/meson.build
+++ b/libnm-core/meson.build
@@ -18,6 +18,7 @@ libnm_core_headers = files(
'nm-core-types.h',
'nm-dbus-interface.h',
'nm-errors.h',
+ 'nm-keyfile.h',
'nm-setting-6lowpan.h',
'nm-setting-8021x.h',
'nm-setting-adsl.h',
@@ -32,6 +33,7 @@ libnm_core_headers = files(
'nm-setting-ethtool.h',
'nm-setting-generic.h',
'nm-setting-gsm.h',
+ 'nm-setting-hostname.h',
'nm-setting-infiniband.h',
'nm-setting-ip-config.h',
'nm-setting-ip-tunnel.h',
@@ -42,8 +44,9 @@ libnm_core_headers = files(
'nm-setting-match.h',
'nm-setting-olpc-mesh.h',
'nm-setting-ovs-bridge.h',
- 'nm-setting-ovs-interface.h',
'nm-setting-ovs-dpdk.h',
+ 'nm-setting-ovs-external-ids.h',
+ 'nm-setting-ovs-interface.h',
'nm-setting-ovs-patch.h',
'nm-setting-ovs-port.h',
'nm-setting-ppp.h',
@@ -56,6 +59,7 @@ libnm_core_headers = files(
'nm-setting-team.h',
'nm-setting-tun.h',
'nm-setting-user.h',
+ 'nm-setting-veth.h',
'nm-setting-vlan.h',
'nm-setting-vpn.h',
'nm-setting-vrf.h',
@@ -132,6 +136,7 @@ libnm_core_settings_sources = files(
'nm-setting-ethtool.c',
'nm-setting-generic.c',
'nm-setting-gsm.c',
+ 'nm-setting-hostname.c',
'nm-setting-infiniband.c',
'nm-setting-ip-config.c',
'nm-setting-ip-tunnel.c',
@@ -142,8 +147,9 @@ libnm_core_settings_sources = files(
'nm-setting-match.c',
'nm-setting-olpc-mesh.c',
'nm-setting-ovs-bridge.c',
- 'nm-setting-ovs-interface.c',
'nm-setting-ovs-dpdk.c',
+ 'nm-setting-ovs-external-ids.c',
+ 'nm-setting-ovs-interface.c',
'nm-setting-ovs-patch.c',
'nm-setting-ovs-port.c',
'nm-setting-ppp.c',
@@ -156,6 +162,7 @@ libnm_core_settings_sources = files(
'nm-setting-team.c',
'nm-setting-tun.c',
'nm-setting-user.c',
+ 'nm-setting-veth.c',
'nm-setting-vlan.c',
'nm-setting-vpn.c',
'nm-setting-vrf.c',
@@ -235,12 +242,14 @@ libnm_libnm_core_aux_dep = declare_dependency(
link_with: libnm_libnm_core_aux,
)
+nm_keyfile_source = files(
+ 'nm-keyfile/nm-keyfile-utils.c',
+ 'nm-keyfile/nm-keyfile.c',
+)
+
libnm_keyfile = static_library(
'nm-keyfile',
- sources: files(
- 'nm-keyfile/nm-keyfile-utils.c',
- 'nm-keyfile/nm-keyfile.c',
- ) + [libnm_core_enum_sources[1]],
+ sources: nm_keyfile_source + [libnm_core_enum_sources[1]],
dependencies: libnm_utils_base_dep,
c_args: [
'-DG_LOG_DOMAIN="@0@"'.format(libnm_name),
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c
index 10bfe7b839..651d919395 100644
--- a/libnm-core/nm-connection.c
+++ b/libnm-core/nm-connection.c
@@ -1065,7 +1065,8 @@ _normalize_bond_mode(NMConnection *self)
if (mode_int != -1) {
const char *mode_new = nm_utils_bond_mode_int_to_string(mode_int);
- if (g_strcmp0(mode_new, mode) != 0) {
+
+ if (!nm_streq0(mode_new, mode)) {
nm_setting_bond_add_option(s_bond, NM_SETTING_BOND_OPTION_MODE, mode_new);
return TRUE;
}
@@ -2641,6 +2642,7 @@ nm_connection_is_virtual(NMConnection *connection)
NM_SETTING_OVS_PORT_SETTING_NAME,
NM_SETTING_TEAM_SETTING_NAME,
NM_SETTING_TUN_SETTING_NAME,
+ NM_SETTING_VETH_SETTING_NAME,
NM_SETTING_VLAN_SETTING_NAME,
NM_SETTING_VRF_SETTING_NAME,
NM_SETTING_VXLAN_SETTING_NAME,
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index f296a77fa6..b522487d12 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -37,6 +37,7 @@
#include "nm-setting-dummy.h"
#include "nm-setting-generic.h"
#include "nm-setting-gsm.h"
+#include "nm-setting-hostname.h"
#include "nm-setting-infiniband.h"
#include "nm-setting-ip-tunnel.h"
#include "nm-setting-ip4-config.h"
@@ -59,6 +60,7 @@
#include "nm-setting-team-port.h"
#include "nm-setting-team.h"
#include "nm-setting-tun.h"
+#include "nm-setting-veth.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
#include "nm-setting-vrf.h"
@@ -476,6 +478,10 @@ GSList *_nm_vpn_plugin_info_list_load_dir(const char * dirname,
/*****************************************************************************/
+GHashTable *_nm_setting_ovs_external_ids_get_data(NMSettingOvsExternalIDs *self);
+
+/*****************************************************************************/
+
typedef struct {
const char *name;
gboolean numeric;
diff --git a/libnm-core/nm-core-types.h b/libnm-core/nm-core-types.h
index 80466e351d..9668ec8ff2 100644
--- a/libnm-core/nm-core-types.h
+++ b/libnm-core/nm-core-types.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2014 - 2018 Red Hat, Inc.
*/
@@ -28,6 +28,7 @@ typedef struct _NMSettingDummy NMSettingDummy;
typedef struct _NMSettingEthtool NMSettingEthtool;
typedef struct _NMSettingGeneric NMSettingGeneric;
typedef struct _NMSettingGsm NMSettingGsm;
+typedef struct _NMSettingHostname NMSettingHostname;
typedef struct _NMSettingIP4Config NMSettingIP4Config;
typedef struct _NMSettingIP6Config NMSettingIP6Config;
typedef struct _NMSettingIPConfig NMSettingIPConfig;
@@ -39,6 +40,7 @@ typedef struct _NMSettingMatch NMSettingMatch;
typedef struct _NMSettingOlpcMesh NMSettingOlpcMesh;
typedef struct _NMSettingOvsBridge NMSettingOvsBridge;
typedef struct _NMSettingOvsDpdk NMSettingOvsDpdk;
+typedef struct _NMSettingOvsExternalIDs NMSettingOvsExternalIDs;
typedef struct _NMSettingOvsInterface NMSettingOvsInterface;
typedef struct _NMSettingOvsPatch NMSettingOvsPatch;
typedef struct _NMSettingOvsPort NMSettingOvsPort;
@@ -52,6 +54,7 @@ typedef struct _NMSettingTeam NMSettingTeam;
typedef struct _NMSettingTeamPort NMSettingTeamPort;
typedef struct _NMSettingTun NMSettingTun;
typedef struct _NMSettingUser NMSettingUser;
+typedef struct _NMSettingVeth NMSettingVeth;
typedef struct _NMSettingVlan NMSettingVlan;
typedef struct _NMSettingVpn NMSettingVpn;
typedef struct _NMSettingVrf NMSettingVrf;
diff --git a/libnm-core/nm-dbus-interface.h b/libnm-core/nm-dbus-interface.h
index eaa4c1b56c..e7e1244bed 100644
--- a/libnm-core/nm-dbus-interface.h
+++ b/libnm-core/nm-dbus-interface.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2004 - 2018 Red Hat, Inc.
*/
diff --git a/libnm-core/nm-keyfile.h b/libnm-core/nm-keyfile.h
new file mode 100644
index 0000000000..0967d25495
--- /dev/null
+++ b/libnm-core/nm-keyfile.h
@@ -0,0 +1,165 @@
+// SPDX-License-Identifier: LGPL-2.1+
+
+#ifndef __NM_KEYFILE_H__
+#define __NM_KEYFILE_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+ #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-core-types.h"
+
+G_BEGIN_DECLS
+
+/**
+ * NMKeyfileHandlerFlags:
+ * @NM_KEYFILE_HANDLER_FLAGS_NONE: no flags set.
+ *
+ * Flags for customizing nm_keyfile_read() and nm_keyfile_write().
+ *
+ * Currently no flags are implemented.
+ *
+ * Since: 1.30
+ */
+typedef enum { /*< flags >*/
+ NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
+} NMKeyfileHandlerFlags;
+
+/**
+ * NMKeyfileHandlerType:
+ * @NM_KEYFILE_HANDLER_TYPE_WARN: a warning.
+ * @NM_KEYFILE_HANDLER_TYPE_WRITE_CERT: for handling certificates while writing
+ * a connection to keyfile.
+ *
+ * The type of the callback for %NMKeyfileReadHandler and %NMKeyfileWriteHandler.
+ * Depending on the type, you can interpret %NMKeyfileHandlerData.
+ *
+ * Since: 1.30
+ */
+typedef enum {
+ NM_KEYFILE_HANDLER_TYPE_WARN = 1,
+ NM_KEYFILE_HANDLER_TYPE_WRITE_CERT = 2,
+} NMKeyfileHandlerType;
+
+/**
+ * NMKeyfileHandlerData:
+ *
+ * Opaque type with parameters for the callback. The actual content
+ * depends on the %NMKeyfileHandlerType.
+ *
+ * Since: 1.30
+ */
+typedef struct _NMKeyfileHandlerData NMKeyfileHandlerData;
+
+/**
+ * NMKeyfileReadHandler:
+ * @keyfile: the #GKeyFile that is currently read
+ * @connection: the #NMConnection that is being constructed.
+ * @handler_type: the %NMKeyfileHandlerType that indicates which type
+ * the request is.
+ * @handler_data: the #NMKeyfileHandlerData. What you can do with it
+ * depends on the @handler_type.
+ * @user_data: the user-data argument to nm_keyfile_read().
+ *
+ * Hook to nm_keyfile_read().
+ *
+ * The callee may abort the reading by setting an error via nm_keyfile_handler_data_fail_with_error().
+ *
+ * Returns: the callee should return TRUE, if the event was handled and/or recognized.
+ * Otherwise, a default action will be performed that depends on the @type.
+ * For %NM_KEYFILE_HANDLER_TYPE_WARN type, the default action is doing nothing.
+ *
+ * Since: 1.30
+ */
+typedef gboolean (*NMKeyfileReadHandler)(GKeyFile * keyfile,
+ NMConnection * connection,
+ NMKeyfileHandlerType handler_type,
+ NMKeyfileHandlerData *handler_data,
+ void * user_data);
+
+NM_AVAILABLE_IN_1_30
+NMConnection *nm_keyfile_read(GKeyFile * keyfile,
+ const char * base_dir,
+ NMKeyfileHandlerFlags handler_flags,
+ NMKeyfileReadHandler handler,
+ void * user_data,
+ GError ** error);
+
+/**
+ * NMKeyfileWriteHandler:
+ * @connection: the #NMConnection that is currently written.
+ * @keyfile: the #GKeyFile that is currently constructed.
+ * @handler_type: the %NMKeyfileHandlerType that indicates which type
+ * the request is.
+ * @handler_data: the #NMKeyfileHandlerData. What you can do with it
+ * depends on the @handler_type.
+ * @user_data: the user-data argument to nm_keyfile_read().
+ *
+ * This is a hook to tweak the serialization.
+ *
+ * Handler for certain properties or events that are not entirely contained
+ * within the keyfile or that might be serialized differently. The @type and
+ * @handler_data arguments tell which kind of argument we have at hand.
+ *
+ * Currently only the type %NM_KEYFILE_HANDLER_TYPE_WRITE_CERT is supported.
+ *
+ * The callee may call nm_keyfile_handler_data_fail_with_error() to abort
+ * the writing with error.
+ *
+ * Returns: the callee should return %TRUE if the event was handled. If the
+ * event was unhandled, a default action will be performed that depends on
+ * the @handler_type.
+ *
+ * Since: 1.30
+ */
+typedef gboolean (*NMKeyfileWriteHandler)(NMConnection * connection,
+ GKeyFile * keyfile,
+ NMKeyfileHandlerType handler_type,
+ NMKeyfileHandlerData *handler_data,
+ void * user_data);
+
+NM_AVAILABLE_IN_1_30
+GKeyFile *nm_keyfile_write(NMConnection * connection,
+ NMKeyfileHandlerFlags handler_flags,
+ NMKeyfileWriteHandler handler,
+ void * user_data,
+ GError ** error);
+
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_fail_with_error(NMKeyfileHandlerData *handler_data, GError *src);
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_get_context(const NMKeyfileHandlerData *handler_data,
+ const char ** out_kf_group_name,
+ const char ** out_kf_key_name,
+ NMSetting ** out_cur_setting,
+ const char ** out_cur_property_name);
+
+/**
+ * NMKeyfileWarnSeverity:
+ * @NM_KEYFILE_WARN_SEVERITY_DEBUG: debug message
+ * @NM_KEYFILE_WARN_SEVERITY_INFO: info message
+ * @NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE: info message about a missing file
+ * @NM_KEYFILE_WARN_SEVERITY_WARN: a warning message
+ *
+ * The severity level of %NM_KEYFILE_HANDLER_TYPE_WARN events.
+ *
+ * Since: 1.30
+ */
+typedef enum {
+ NM_KEYFILE_WARN_SEVERITY_DEBUG = 1000,
+ NM_KEYFILE_WARN_SEVERITY_INFO = 2000,
+ NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE = 2901,
+ NM_KEYFILE_WARN_SEVERITY_WARN = 3000,
+} NMKeyfileWarnSeverity;
+
+NM_AVAILABLE_IN_1_30
+void nm_keyfile_handler_data_warn_get(const NMKeyfileHandlerData *handler_data,
+ const char ** out_message,
+ NMKeyfileWarnSeverity * out_severity);
+
+G_END_DECLS
+
+#endif /* __NM_KEYFILE_H__ */
diff --git a/libnm-core/nm-keyfile/nm-keyfile-internal.h b/libnm-core/nm-keyfile/nm-keyfile-internal.h
index 77372f3ac9..13f8428252 100644
--- a/libnm-core/nm-keyfile/nm-keyfile-internal.h
+++ b/libnm-core/nm-keyfile/nm-keyfile-internal.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2008 Novell, Inc.
* Copyright (C) 2015 Red Hat, Inc.
@@ -13,6 +13,8 @@
#include <sys/types.h>
+#include "nm-keyfile.h"
+
#include "nm-connection.h"
#include "nm-setting-8021x.h"
@@ -31,47 +33,6 @@ char *nm_keyfile_detect_unqualified_path_scheme(const char * base_dir,
gboolean consider_exists,
gboolean * out_exists);
-typedef enum { /*< flags >*/
- NM_KEYFILE_HANDLER_FLAGS_NONE = 0,
-} NMKeyfileHandlerFlags;
-
-typedef enum {
- NM_KEYFILE_HANDLER_TYPE_WARN = 1,
- NM_KEYFILE_HANDLER_TYPE_WRITE_CERT = 2,
-} NMKeyfileHandlerType;
-
-typedef struct _NMKeyfileHandlerData NMKeyfileHandlerData;
-
-/**
- * NMKeyfileReadHandler:
- *
- * Hook to nm_keyfile_read(). The user might fail the reading by setting
- * @error.
- *
- * Returns: should return TRUE, if the reading was handled. Otherwise,
- * a default action will be performed that depends on the @handler_type.
- * For %NM_KEYFILE_HANDLER_TYPE_WARN handler_type, the default action is doing nothing.
- */
-typedef gboolean (*NMKeyfileReadHandler)(GKeyFile * keyfile,
- NMConnection * connection,
- NMKeyfileHandlerType handler_type,
- NMKeyfileHandlerData *handler_data,
- void * user_data);
-
-typedef enum {
- NM_KEYFILE_WARN_SEVERITY_DEBUG = 1000,
- NM_KEYFILE_WARN_SEVERITY_INFO = 2000,
- NM_KEYFILE_WARN_SEVERITY_INFO_MISSING_FILE = 2901,
- NM_KEYFILE_WARN_SEVERITY_WARN = 3000,
-} NMKeyfileWarnSeverity;
-
-NMConnection *nm_keyfile_read(GKeyFile * keyfile,
- const char * base_dir,
- NMKeyfileHandlerFlags handler_flags,
- NMKeyfileReadHandler handler,
- void * user_data,
- GError ** error);
-
gboolean nm_keyfile_read_ensure_id(NMConnection *connection, const char *fallback_id);
gboolean nm_keyfile_read_ensure_uuid(NMConnection *connection, const char *fallback_uuid_seed);
@@ -79,47 +40,10 @@ gboolean nm_keyfile_read_ensure_uuid(NMConnection *connection, const char *fallb
/*****************************************************************************/
/**
- * NMKeyfileWriteHandler:
- *
- * This is a hook to tweak the serialization.
- *
- * Handler for certain properties or events that are not entirely contained
- * within the keyfile or that might be serialized differently. The @handler_type and
- * @handler_data arguments tell which kind of argument we have at hand.
- *
- * Currently only the handler_type %NM_KEYFILE_HANDLER_TYPE_WRITE_CERT is supported, which provides
- * @handler_data as %NMKeyfileHandlerDataWriteCert. However, this handler should be generic enough
- * to support other types as well.
- *
- * This don't have to be only "properties". For example, nm_keyfile_read() uses
- * a similar handler to push warnings to the caller.
- *
- * If the handler raises an error, it should set the @error value. This causes
- * the an overall failure.
- *
- * Returns: whether the issue was handled. If the type was unhandled,
- * a default action will be performed. This might be raise an error,
- * do some fallback parsing, or do nothing.
- */
-typedef gboolean (*NMKeyfileWriteHandler)(NMConnection * connection,
- GKeyFile * keyfile,
- NMKeyfileHandlerType handler_type,
- NMKeyfileHandlerData *handler_data,
- void * user_data);
-
-GKeyFile *nm_keyfile_write(NMConnection * connection,
- NMKeyfileHandlerFlags handler_flags,
- NMKeyfileWriteHandler handler,
- void * user_data,
- GError ** error);
-
-/*****************************************************************************/
-
-/**
* NMKeyfileHandlerDataWarn:
*
* this struct is passed as @handler_data for the @NMKeyfileReadHandler of
- * handler_type %NM_KEYFILE_HANDLER_TYPE_WARN.
+ * type %NM_KEYFILE_HANDLER_TYPE_WARN.
*/
typedef struct {
NMKeyfileWarnSeverity severity;
@@ -132,7 +56,7 @@ typedef struct {
* NMKeyfileHandlerDataWriteCert:
*
* this struct is passed as @handler_data for the @NMKeyfileWriteHandler of
- * handler_type %NM_KEYFILE_HANDLER_TYPE_WRITE_CERT.
+ * type %NM_KEYFILE_HANDLER_TYPE_WRITE_CERT.
*/
typedef struct {
const NMSetting8021xSchemeVtable *vtable;
@@ -157,18 +81,6 @@ struct _NMKeyfileHandlerData {
/*****************************************************************************/
-void nm_keyfile_handler_data_fail_with_error(NMKeyfileHandlerData *handler_data, GError *src);
-
-void nm_keyfile_handler_data_get_context(const NMKeyfileHandlerData *handler_data,
- const char ** out_kf_group_name,
- const char ** out_kf_key_name,
- NMSetting ** out_cur_setting,
- const char ** out_cur_property_name);
-
-void nm_keyfile_handler_data_warn_get(const NMKeyfileHandlerData *handler_data,
- const char ** out_message,
- NMKeyfileWarnSeverity * out_severity);
-
const char *_nm_keyfile_handler_data_warn_get_message(const NMKeyfileHandlerData *handler_data);
/*****************************************************************************/
diff --git a/libnm-core/nm-keyfile/nm-keyfile-utils.c b/libnm-core/nm-keyfile/nm-keyfile-utils.c
index be12f8a83f..db2a2ea2d5 100644
--- a/libnm-core/nm-keyfile/nm-keyfile-utils.c
+++ b/libnm-core/nm-keyfile/nm-keyfile-utils.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2010 Red Hat, Inc.
*/
@@ -11,11 +11,13 @@
#include "nm-glib-aux/nm-str-buf.h"
-#include "nm-keyfile-internal.h"
+#include "nm-keyfile.h"
#include "nm-setting-wired.h"
#include "nm-setting-wireless.h"
#include "nm-setting-wireless-security.h"
+#include "nm-keyfile-internal.h"
+
/*****************************************************************************/
/**
diff --git a/libnm-core/nm-keyfile/nm-keyfile-utils.h b/libnm-core/nm-keyfile/nm-keyfile-utils.h
index efad8317b0..9d18f5b54d 100644
--- a/libnm-core/nm-keyfile/nm-keyfile-utils.h
+++ b/libnm-core/nm-keyfile/nm-keyfile-utils.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2010 - 2015 Red Hat, Inc.
*/
diff --git a/libnm-core/nm-keyfile/nm-keyfile.c b/libnm-core/nm-keyfile/nm-keyfile.c
index 395af1db09..910fd0e603 100644
--- a/libnm-core/nm-keyfile/nm-keyfile.c
+++ b/libnm-core/nm-keyfile/nm-keyfile.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2008 - 2009 Novell, Inc.
* Copyright (C) 2008 - 2017 Red Hat, Inc.
@@ -20,10 +20,17 @@
#include "nm-glib-aux/nm-secret-utils.h"
#include "systemd/nm-sd-utils-shared.h"
#include "nm-libnm-core-intern/nm-common-macros.h"
+
#include "nm-core-internal.h"
+#include "nm-keyfile.h"
+#include "nm-setting-user.h"
+#include "nm-setting-ovs-external-ids.h"
+
#include "nm-keyfile-utils.h"
-#include "nm-setting-user.h"
+#define ETHERNET_S390_OPTIONS_GROUP_NAME "ethernet-s390-options"
+
+#define OVS_EXTERNAL_IDS_DATA_PREFIX "data."
/*****************************************************************************/
@@ -988,6 +995,44 @@ ip_routing_rule_parser_full(KeyfileReaderInfo * info,
}
static void
+_parser_full_ovs_external_ids_data(KeyfileReaderInfo * info,
+ const NMMetaSettingInfo * setting_info,
+ const NMSettInfoProperty *property_info,
+ const ParseInfoProperty * pip,
+ NMSetting * setting)
+{
+ const char * setting_name = NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME;
+ gs_strfreev char **keys = NULL;
+ gsize n_keys;
+ gsize i;
+
+ nm_assert(NM_IS_SETTING_OVS_EXTERNAL_IDS(setting));
+ nm_assert(nm_streq(property_info->name, NM_SETTING_OVS_EXTERNAL_IDS_DATA));
+ nm_assert(nm_streq(setting_name, setting_info->setting_name));
+ nm_assert(nm_streq(setting_name, nm_setting_get_name(setting)));
+
+ keys = nm_keyfile_plugin_kf_get_keys(info->keyfile, setting_name, &n_keys, NULL);
+
+ for (i = 0; i < n_keys; i++) {
+ const char * key = keys[i];
+ gs_free char *name_to_free = NULL;
+ gs_free char *value = NULL;
+ const char * name;
+
+ if (!NM_STR_HAS_PREFIX(key, OVS_EXTERNAL_IDS_DATA_PREFIX))
+ continue;
+
+ value = nm_keyfile_plugin_kf_get_string(info->keyfile, setting_name, key, NULL);
+ if (!value)
+ continue;
+
+ name = &key[NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX)];
+ name = nm_keyfile_key_decode(name, &name_to_free);
+ nm_setting_ovs_external_ids_set_data(NM_SETTING_OVS_EXTERNAL_IDS(setting), name, value);
+ }
+}
+
+static void
ip_dns_parser(KeyfileReaderInfo *info, NMSetting *setting, const char *key)
{
int addr_family;
@@ -1141,7 +1186,10 @@ mac_address_parser_INFINIBAND(KeyfileReaderInfo *info, NMSetting *setting, const
}
static void
-read_hash_of_string(GKeyFile *file, NMSetting *setting, const char *key)
+read_hash_of_string(KeyfileReaderInfo *info,
+ GKeyFile * file,
+ NMSetting * setting,
+ const char * kf_group)
{
gs_strfreev char **keys = NULL;
const char *const *iter;
@@ -1149,10 +1197,10 @@ read_hash_of_string(GKeyFile *file, NMSetting *setting, const char *key)
gboolean is_vpn;
gsize n_keys;
- nm_assert((NM_IS_SETTING_VPN(setting) && nm_streq(key, NM_SETTING_VPN_DATA))
- || (NM_IS_SETTING_VPN(setting) && nm_streq(key, NM_SETTING_VPN_SECRETS))
- || (NM_IS_SETTING_BOND(setting) && nm_streq(key, NM_SETTING_BOND_OPTIONS))
- || (NM_IS_SETTING_USER(setting) && nm_streq(key, NM_SETTING_USER_DATA)));
+ nm_assert((NM_IS_SETTING_VPN(setting) && nm_streq(kf_group, NM_SETTING_VPN_DATA))
+ || (NM_IS_SETTING_VPN(setting) && nm_streq(kf_group, NM_SETTING_VPN_SECRETS))
+ || (NM_IS_SETTING_BOND(setting) && nm_streq(kf_group, NM_SETTING_BOND_OPTIONS))
+ || (NM_IS_SETTING_USER(setting) && nm_streq(kf_group, NM_SETTING_USER_DATA)));
keys = nm_keyfile_plugin_kf_get_keys(file, setting_name, &n_keys, NULL);
if (n_keys == 0)
@@ -1160,23 +1208,38 @@ read_hash_of_string(GKeyFile *file, NMSetting *setting, const char *key)
if ((is_vpn = NM_IS_SETTING_VPN(setting)) || NM_IS_SETTING_BOND(setting)) {
for (iter = (const char *const *) keys; *iter; iter++) {
+ const char * kf_key = *iter;
gs_free char *to_free = NULL;
gs_free char *value = NULL;
const char * name;
- value = nm_keyfile_plugin_kf_get_string(file, setting_name, *iter, NULL);
+ value = nm_keyfile_plugin_kf_get_string(file, setting_name, kf_key, NULL);
if (!value)
continue;
- name = nm_keyfile_key_decode(*iter, &to_free);
+ name = nm_keyfile_key_decode(kf_key, &to_free);
if (is_vpn) {
/* Add any item that's not a class property to the data hash */
if (!g_object_class_find_property(G_OBJECT_GET_CLASS(setting), name))
nm_setting_vpn_add_data_item(NM_SETTING_VPN(setting), name, value);
} else {
- if (!nm_streq(name, "interface-name"))
- nm_setting_bond_add_option(NM_SETTING_BOND(setting), name, value);
+ if (!nm_streq(name, "interface-name")) {
+ gs_free_error GError *error = NULL;
+
+ if (!_nm_setting_bond_validate_option(name, value, &error)) {
+ if (!handle_warn(info,
+ kf_key,
+ name,
+ NM_KEYFILE_WARN_SEVERITY_WARN,
+ _("ignoring invalid bond option %s%s%s = %s%s%s: %s"),
+ NM_PRINT_FMT_QUOTE_STRING(name),
+ NM_PRINT_FMT_QUOTE_STRING(value),
+ error->message))
+ return;
+ } else
+ nm_setting_bond_add_option(NM_SETTING_BOND(setting), name, value);
+ }
}
}
openconnect_fix_secret_flags(setting);
@@ -2194,8 +2257,6 @@ bridge_vlan_writer(KeyfileWriterInfo *info,
}
}
-#define ETHERNET_S390_OPTIONS_GROUP_NAME "ethernet-s390-options"
-
static void
wired_s390_options_parser_full(KeyfileReaderInfo * info,
const NMMetaSettingInfo * setting_info,
@@ -2341,6 +2402,60 @@ tfilter_writer(KeyfileWriterInfo *info, NMSetting *setting, const char *key, con
}
static void
+_writer_full_ovs_external_ids_data(KeyfileWriterInfo * info,
+ const NMMetaSettingInfo * setting_info,
+ const NMSettInfoProperty *property_info,
+ const ParseInfoProperty * pip,
+ NMSetting * setting)
+{
+ GHashTable * hash;
+ NMUtilsNamedValue data_static[300u / sizeof(NMUtilsNamedValue)];
+ gs_free NMUtilsNamedValue *data_free = NULL;
+ const NMUtilsNamedValue * data;
+ guint data_len;
+ char full_key_static[NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX) + 300u];
+ guint i;
+
+ nm_assert(NM_IS_SETTING_OVS_EXTERNAL_IDS(setting));
+ nm_assert(nm_streq(property_info->name, NM_SETTING_OVS_EXTERNAL_IDS_DATA));
+
+ hash = _nm_setting_ovs_external_ids_get_data(NM_SETTING_OVS_EXTERNAL_IDS(setting));
+ if (!hash)
+ return;
+
+ data = nm_utils_named_values_from_strdict(hash, &data_len, data_static, &data_free);
+ if (data_len == 0)
+ return;
+
+ memcpy(full_key_static, OVS_EXTERNAL_IDS_DATA_PREFIX, NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX));
+
+ for (i = 0; i < data_len; i++) {
+ const char * key = data[i].name;
+ const char * val = data[i].value_str;
+ gs_free char *escaped_key_to_free = NULL;
+ const char * escaped_key;
+ gsize len;
+ gs_free char *full_key_free = NULL;
+ char * full_key = full_key_static;
+
+ escaped_key = nm_keyfile_key_encode(key, &escaped_key_to_free);
+
+ len = strlen(escaped_key) + 1u;
+ if (len >= G_N_ELEMENTS(full_key_static) - NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX)) {
+ full_key_free = g_new(char, NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX) + len);
+ full_key = full_key_free;
+ memcpy(full_key, OVS_EXTERNAL_IDS_DATA_PREFIX, NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX));
+ }
+ memcpy(&full_key[NM_STRLEN(OVS_EXTERNAL_IDS_DATA_PREFIX)], escaped_key, len);
+
+ nm_keyfile_plugin_kf_set_string(info->keyfile,
+ NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+ full_key,
+ val);
+ }
+}
+
+static void
write_hash_of_string(GKeyFile *file, NMSetting *setting, const char *key, const GValue *value)
{
GHashTable * hash;
@@ -2779,6 +2894,14 @@ static const ParseInfoSetting *const parse_infos[_NM_META_SETTING_TYPE_NUM] = {
.writer_full = ip_routing_rule_writer_full,
.has_parser_full = TRUE,
.has_writer_full = TRUE, ), ), ),
+ PARSE_INFO_SETTING(
+ NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
+ PARSE_INFO_PROPERTIES(PARSE_INFO_PROPERTY(NM_SETTING_OVS_EXTERNAL_IDS_DATA,
+ .parser_no_check_key = TRUE,
+ .parser_full = _parser_full_ovs_external_ids_data,
+ .writer_full = _writer_full_ovs_external_ids_data,
+ .has_parser_full = TRUE,
+ .has_writer_full = TRUE, ), ), ),
PARSE_INFO_SETTING(NM_META_SETTING_TYPE_SERIAL,
PARSE_INFO_PROPERTIES(PARSE_INFO_PROPERTY(NM_SETTING_SERIAL_PARITY,
.parser = parity_parser, ), ), ),
@@ -3170,7 +3293,7 @@ read_one_setting_value(KeyfileReaderInfo * info,
NULL);
g_object_set(setting, key, sa, NULL);
} else if (type == G_TYPE_HASH_TABLE) {
- read_hash_of_string(keyfile, setting, key);
+ read_hash_of_string(info, keyfile, setting, key);
} else if (type == G_TYPE_ARRAY) {
read_array_of_uint(keyfile, setting, key);
} else if (G_TYPE_IS_FLAGS(type)) {
@@ -3582,14 +3705,16 @@ nm_keyfile_read_ensure_uuid(NMConnection *connection, const char *fallback_uuid_
* the relative path is made absolute using @base_dir. This must
* be an absolute path.
* @handler_flags: the #NMKeyfileHandlerFlags.
- * @handler: read handler
+ * @handler: (allow-none) (scope call): read handler
* @user_data: user data for read handler
- * @error: error
+ * @error: (allow-none) (out): error
*
* Tries to create a NMConnection from a keyfile. The resulting keyfile is
* not normalized and might not even verify.
*
* Returns: (transfer full): on success, returns the created connection.
+ *
+ * Since: 1.30
*/
NMConnection *
nm_keyfile_read(GKeyFile * keyfile,
@@ -3928,6 +4053,22 @@ _write_setting_wireguard(NMSetting *setting, KeyfileWriterInfo *info)
}
}
+/**
+ * nm_keyfile_write:
+ * @connection: the #NMConnection to persist to keyfile.
+ * @handler_flags: the #NMKeyfileHandlerFlags.
+ * @handler: (allow-none) (scope call): optional handler for events and
+ * to override the default behavior.
+ * @user_data: argument for @handler.
+ * @error: the #GError in case writing fails.
+ *
+ * @connection must verify as a valid profile according to
+ * nm_connection_verify().
+ *
+ * Returns: (transfer full): a new #GKeyFile or %NULL on error.
+ *
+ * Since: 1.30
+ */
GKeyFile *
nm_keyfile_write(NMConnection * connection,
NMKeyfileHandlerFlags handler_flags,
@@ -3936,16 +4077,38 @@ nm_keyfile_write(NMConnection * connection,
GError ** error)
{
nm_auto_unref_keyfile GKeyFile *keyfile = NULL;
+ GError * local = NULL;
KeyfileWriterInfo info;
- gs_free NMSetting **settings = NULL;
- guint i, j, n_settings = 0;
+ gs_free NMSetting **settings = NULL;
+ guint n_settings = 0;
+ guint i;
+ guint j;
g_return_val_if_fail(NM_IS_CONNECTION(connection), NULL);
g_return_val_if_fail(!error || !*error, NULL);
g_return_val_if_fail(handler_flags == NM_KEYFILE_HANDLER_FLAGS_NONE, NULL);
- if (!nm_connection_verify(connection, error))
+ /* Technically, we might not require that a profile is valid in
+ * order to serialize it. Like also nm_keyfile_read() does not
+ * ensure that the read profile validates.
+ *
+ * However, if the profile does not validate, then there might be
+ * unexpected edge cases when we try to serialize it. Edge cases
+ * that might result in dangerous crash.
+ *
+ * So, for now we require valid profiles. */
+ if (!nm_connection_verify(connection, error ? &local : NULL)) {
+ if (error) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_FAILED,
+ _("the profile is not valid: %s"),
+ local->message);
+ g_error_free(local);
+ } else
+ nm_assert(!local);
return NULL;
+ }
keyfile = g_key_file_new();
@@ -4193,6 +4356,8 @@ nm_keyfile_utils_create_filename(const char *name, gboolean with_extension)
* Note that @src is no longer valid after this call. If you want
* to keep using the same GError*, you need to set it to %NULL
* after calling this function on it.
+ *
+ * Since: 1.30
*/
void
nm_keyfile_handler_data_fail_with_error(NMKeyfileHandlerData *handler_data, GError *src)
@@ -4217,6 +4382,8 @@ nm_keyfile_handler_data_fail_with_error(NMKeyfileHandlerData *handler_data, GErr
*
* Get context information of the current event. This function can be called
* on all events, but the context information may be unset.
+ *
+ * Since: 1.30
*/
void
nm_keyfile_handler_data_get_context(const NMKeyfileHandlerData *handler_data,
@@ -4258,6 +4425,8 @@ _nm_keyfile_handler_data_warn_get_message(const NMKeyfileHandlerData *handler_da
* event.
* @out_message: (out) (allow-none) (transfer none): the warning message.
* @out_severity: (out) (allow-none): the #NMKeyfileWarnSeverity warning severity.
+ *
+ * Since: 1.30
*/
void
nm_keyfile_handler_data_warn_get(const NMKeyfileHandlerData *handler_data,
diff --git a/libnm-core/nm-libnm-core-aux/nm-dispatcher-api.h b/libnm-core/nm-libnm-core-aux/nm-dispatcher-api.h
index 80546a83d2..3f8f6516cc 100644
--- a/libnm-core/nm-libnm-core-aux/nm-dispatcher-api.h
+++ b/libnm-core/nm-libnm-core-aux/nm-dispatcher-api.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2008 - 2012 Red Hat, Inc.
*/
diff --git a/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c b/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c
index 65cd8ba5d7..1d24d8fee8 100644
--- a/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c
+++ b/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c
@@ -36,18 +36,19 @@ _nm_setting_bond_remove_options_arp_interval(NMSettingBond *s_bond)
nm_setting_bond_remove_option(s_bond, NM_SETTING_BOND_OPTION_ARP_IP_TARGET);
}
+/*****************************************************************************/
+
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
_nm_setting_bond_mode_from_string,
NMBondMode,
- { g_return_val_if_fail(name, NM_BOND_MODE_UNKNOWN); },
+ {
+ G_STATIC_ASSERT_EXPR(_NM_BOND_MODE_NUM <= 9);
+
+ if (name && name[0] < '0' + _NM_BOND_MODE_NUM && name[0] >= '0' && name[1] == '\0') {
+ return name[0] - '0';
+ }
+ },
{ return NM_BOND_MODE_UNKNOWN; },
- {"0", NM_BOND_MODE_ROUNDROBIN},
- {"1", NM_BOND_MODE_ACTIVEBACKUP},
- {"2", NM_BOND_MODE_XOR},
- {"3", NM_BOND_MODE_BROADCAST},
- {"4", NM_BOND_MODE_8023AD},
- {"5", NM_BOND_MODE_TLB},
- {"6", NM_BOND_MODE_ALB},
{"802.3ad", NM_BOND_MODE_8023AD},
{"active-backup", NM_BOND_MODE_ACTIVEBACKUP},
{"balance-alb", NM_BOND_MODE_ALB},
@@ -56,6 +57,47 @@ NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
{"balance-xor", NM_BOND_MODE_XOR},
{"broadcast", NM_BOND_MODE_BROADCAST}, );
+const char *
+_nm_setting_bond_mode_to_string(int mode)
+{
+ static const char *const modes[] = {
+ [NM_BOND_MODE_8023AD] = "802.3ad",
+ [NM_BOND_MODE_ACTIVEBACKUP] = "active-backup",
+ [NM_BOND_MODE_ALB] = "balance-alb",
+ [NM_BOND_MODE_BROADCAST] = "broadcast",
+ [NM_BOND_MODE_ROUNDROBIN] = "balance-rr",
+ [NM_BOND_MODE_TLB] = "balance-tlb",
+ [NM_BOND_MODE_XOR] = "balance-xor",
+ };
+
+ G_STATIC_ASSERT(G_N_ELEMENTS(modes) == _NM_BOND_MODE_NUM);
+
+ if (NM_MORE_ASSERT_ONCE(5)) {
+ char sbuf[100];
+ int i;
+ NMBondMode m;
+
+ for (i = 0; i < (int) G_N_ELEMENTS(modes); i++) {
+ nm_assert(modes[i]);
+ nm_assert(i == _nm_setting_bond_mode_from_string(modes[i]));
+ nm_assert(i == _nm_setting_bond_mode_from_string(nm_sprintf_buf(sbuf, "%d", i)));
+ }
+ nm_assert(NM_BOND_MODE_UNKNOWN == _nm_setting_bond_mode_from_string(NULL));
+ nm_assert(NM_BOND_MODE_UNKNOWN == _nm_setting_bond_mode_from_string(""));
+ for (i = -2; i < ((int) G_N_ELEMENTS(modes)) + 20; i++) {
+ if (i < 0 || i >= G_N_ELEMENTS(modes))
+ m = NM_BOND_MODE_UNKNOWN;
+ else
+ m = i;
+ nm_assert(m == _nm_setting_bond_mode_from_string(nm_sprintf_buf(sbuf, "%d", i)));
+ }
+ }
+
+ if (mode >= 0 && mode < (int) G_N_ELEMENTS(modes))
+ return modes[mode];
+ return NULL;
+}
+
/*****************************************************************************/
gboolean
diff --git a/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.h b/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.h
index 5d672fedb3..ac7b3cc8e8 100644
--- a/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.h
+++ b/libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.h
@@ -65,11 +65,16 @@ typedef enum {
NM_BOND_MODE_8023AD = 4,
NM_BOND_MODE_TLB = 5,
NM_BOND_MODE_ALB = 6,
+
_NM_BOND_MODE_NUM,
} NMBondMode;
NMBondMode _nm_setting_bond_mode_from_string(const char *str);
+const char *_nm_setting_bond_mode_to_string(int mode);
+
+gboolean _nm_setting_bond_validate_option(const char *name, const char *value, GError **error);
+
/*****************************************************************************/
static inline guint32
@@ -93,6 +98,11 @@ gboolean nm_utils_vlan_priority_map_parse_str(NMVlanPriorityMap map_type,
/*****************************************************************************/
+#define NM_OVS_EXTERNAL_ID_NM_PREFIX "NM."
+#define NM_OVS_EXTERNAL_ID_NM_CONNECTION_UUID "NM.connection.uuid"
+
+/*****************************************************************************/
+
static inline int
nm_setting_ip_config_get_addr_family(NMSettingIPConfig *s_ip)
{
diff --git a/libnm-core/nm-setting-6lowpan.c b/libnm-core/nm-setting-6lowpan.c
index 630c312665..ed7238cdac 100644
--- a/libnm-core/nm-setting-6lowpan.c
+++ b/libnm-core/nm-setting-6lowpan.c
@@ -179,7 +179,7 @@ nm_setting_6lowpan_init(NMSetting6Lowpan *setting)
NMSetting *
nm_setting_6lowpan_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_6LOWPAN, NULL);
+ return g_object_new(NM_TYPE_SETTING_6LOWPAN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-8021x.c b/libnm-core/nm-setting-8021x.c
index d3dc251a14..a4a203231e 100644
--- a/libnm-core/nm-setting-8021x.c
+++ b/libnm-core/nm-setting-8021x.c
@@ -3498,7 +3498,7 @@ nm_setting_802_1x_init(NMSetting8021x *setting)
NMSetting *
nm_setting_802_1x_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_802_1X, NULL);
+ return g_object_new(NM_TYPE_SETTING_802_1X, NULL);
}
static void
diff --git a/libnm-core/nm-setting-adsl.c b/libnm-core/nm-setting-adsl.c
index f84baf1f87..023375b104 100644
--- a/libnm-core/nm-setting-adsl.c
+++ b/libnm-core/nm-setting-adsl.c
@@ -316,7 +316,7 @@ nm_setting_adsl_init(NMSettingAdsl *setting)
NMSetting *
nm_setting_adsl_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_ADSL, NULL);
+ return g_object_new(NM_TYPE_SETTING_ADSL, NULL);
}
static void
diff --git a/libnm-core/nm-setting-bluetooth.c b/libnm-core/nm-setting-bluetooth.c
index f836cea954..d825ac2a87 100644
--- a/libnm-core/nm-setting-bluetooth.c
+++ b/libnm-core/nm-setting-bluetooth.c
@@ -266,7 +266,7 @@ nm_setting_bluetooth_init(NMSettingBluetooth *setting)
NMSetting *
nm_setting_bluetooth_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_BLUETOOTH, NULL);
+ return g_object_new(NM_TYPE_SETTING_BLUETOOTH, NULL);
}
static void
diff --git a/libnm-core/nm-setting-bond.c b/libnm-core/nm-setting-bond.c
index 1428ab6383..0cb38342a6 100644
--- a/libnm-core/nm-setting-bond.c
+++ b/libnm-core/nm-setting-bond.c
@@ -224,9 +224,10 @@ static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
{NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE, ~(BIT(NM_BOND_MODE_ROUNDROBIN))},
{NM_SETTING_BOND_OPTION_PRIMARY,
~(BIT(NM_BOND_MODE_ACTIVEBACKUP) | BIT(NM_BOND_MODE_TLB) | BIT(NM_BOND_MODE_ALB))},
- {NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB, ~(BIT(NM_BOND_MODE_TLB))}, )
+ {NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB, ~(BIT(NM_BOND_MODE_TLB))}, );
- gboolean _nm_setting_bond_option_supported(const char *option, NMBondMode mode)
+gboolean
+_nm_setting_bond_option_supported(const char *option, NMBondMode mode)
{
nm_assert(option);
nm_assert(mode != NM_BOND_MODE_UNKNOWN);
@@ -514,8 +515,8 @@ validate_ifname(const char *name, const char *value)
return nm_utils_ifname_valid_kernel(value, NULL);
}
-static gboolean
-_setting_bond_validate_option(const char *name, const char *value, GError **error)
+gboolean
+_nm_setting_bond_validate_option(const char *name, const char *value, GError **error)
{
const OptionMeta *option_meta;
gboolean success;
@@ -588,7 +589,7 @@ handle_error:
gboolean
nm_setting_bond_validate_option(const char *name, const char *value)
{
- return _setting_bond_validate_option(name, value, NULL);
+ return _nm_setting_bond_validate_option(name, value, NULL);
}
/**
@@ -607,9 +608,6 @@ nm_setting_bond_get_option_by_name(NMSettingBond *setting, const char *name)
{
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), NULL);
- if (!nm_setting_bond_validate_option(name, NULL))
- return NULL;
-
return _bond_get_option(setting, name);
}
@@ -619,16 +617,18 @@ nm_setting_bond_get_option_by_name(NMSettingBond *setting, const char *name)
* @name: name for the option
* @value: value for the option
*
- * Add an option to the table. The option is compared to an internal list
- * of allowed options. Option names may contain only alphanumeric characters
- * (ie [a-zA-Z0-9]). Adding a new name replaces any existing name/value pair
+ * Add an option to the table. Adding a new name replaces any existing name/value pair
* that may already exist.
*
- * The order of how to set several options is relevant because there are options
- * that conflict with each other.
+ * Returns: returns %FALSE if either @name or @value is %NULL, in that case
+ * the option is not set. Otherwise, the function does not fail and does not validate
+ * the arguments. All validation happens via nm_connection_verify() or do basic validation
+ * yourself with nm_setting_bond_validate_option().
*
- * Returns: %TRUE if the option was valid and was added to the internal option
- * list, %FALSE if it was not.
+ * Note: Before 1.30, libnm would perform basic validation of the name and the value
+ * via nm_setting_bond_validate_option() and reject the request by returning FALSE.
+ * Since 1.30, libnm no longer rejects any values as the setter is not supposed
+ * to perform validation.
**/
gboolean
nm_setting_bond_add_option(NMSettingBond *setting, const char *name, const char *value)
@@ -637,16 +637,16 @@ nm_setting_bond_add_option(NMSettingBond *setting, const char *name, const char
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), FALSE);
- if (!value || !nm_setting_bond_validate_option(name, value))
+ if (!name)
+ return FALSE;
+ if (!value)
return FALSE;
priv = NM_SETTING_BOND_GET_PRIVATE(setting);
nm_clear_g_free(&priv->options_idx_cache);
g_hash_table_insert(priv->options, g_strdup(name), g_strdup(value));
-
_notify(setting, PROP_OPTIONS);
-
return TRUE;
}
@@ -665,20 +665,17 @@ gboolean
nm_setting_bond_remove_option(NMSettingBond *setting, const char *name)
{
NMSettingBondPrivate *priv;
- gboolean found;
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), FALSE);
- if (!nm_setting_bond_validate_option(name, NULL))
- return FALSE;
-
priv = NM_SETTING_BOND_GET_PRIVATE(setting);
+ if (!g_hash_table_remove(priv->options, name))
+ return FALSE;
+
nm_clear_g_free(&priv->options_idx_cache);
- found = g_hash_table_remove(priv->options, name);
- if (found)
- _notify(setting, PROP_OPTIONS);
- return found;
+ _notify(setting, PROP_OPTIONS);
+ return TRUE;
}
/**
@@ -782,7 +779,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
for (i = 0; priv->options_idx_cache[i].name; i++) {
n = &priv->options_idx_cache[i];
- if (!n->value_str || !_setting_bond_validate_option(n->name, n->value_str, error)) {
+ if (!n->value_str || !_nm_setting_bond_validate_option(n->name, n->value_str, error)) {
g_prefix_error(error,
"%s.%s: ",
NM_SETTING_BOND_SETTING_NAME,
@@ -1112,7 +1109,7 @@ nm_setting_bond_init(NMSettingBond *setting)
NMSetting *
nm_setting_bond_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_BOND, NULL);
+ return g_object_new(NM_TYPE_SETTING_BOND, NULL);
}
static void
diff --git a/libnm-core/nm-setting-bridge-port.c b/libnm-core/nm-setting-bridge-port.c
index 1d9b6538c5..0b253996d2 100644
--- a/libnm-core/nm-setting-bridge-port.c
+++ b/libnm-core/nm-setting-bridge-port.c
@@ -452,7 +452,7 @@ nm_setting_bridge_port_init(NMSettingBridgePort *setting)
NMSetting *
nm_setting_bridge_port_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_BRIDGE_PORT, NULL);
+ return g_object_new(NM_TYPE_SETTING_BRIDGE_PORT, NULL);
}
static void
diff --git a/libnm-core/nm-setting-bridge.c b/libnm-core/nm-setting-bridge.c
index 7356d568c5..ec5e54ee2d 100644
--- a/libnm-core/nm-setting-bridge.c
+++ b/libnm-core/nm-setting-bridge.c
@@ -1578,7 +1578,7 @@ nm_setting_bridge_init(NMSettingBridge *setting)
NMSetting *
nm_setting_bridge_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_BRIDGE, NULL);
+ return g_object_new(NM_TYPE_SETTING_BRIDGE, NULL);
}
static void
diff --git a/libnm-core/nm-setting-cdma.c b/libnm-core/nm-setting-cdma.c
index d2103b6240..c1dfcc1076 100644
--- a/libnm-core/nm-setting-cdma.c
+++ b/libnm-core/nm-setting-cdma.c
@@ -251,7 +251,7 @@ nm_setting_cdma_init(NMSettingCdma *setting)
NMSetting *
nm_setting_cdma_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_CDMA, NULL);
+ return g_object_new(NM_TYPE_SETTING_CDMA, NULL);
}
static void
diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c
index a21e2c25cf..f82309279f 100644
--- a/libnm-core/nm-setting-connection.c
+++ b/libnm-core/nm-setting-connection.c
@@ -1750,7 +1750,7 @@ nm_setting_connection_init(NMSettingConnection *setting)
NMSetting *
nm_setting_connection_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_CONNECTION, NULL);
+ return g_object_new(NM_TYPE_SETTING_CONNECTION, NULL);
}
static void
diff --git a/libnm-core/nm-setting-dcb.c b/libnm-core/nm-setting-dcb.c
index 1b07af3909..ec347eff8a 100644
--- a/libnm-core/nm-setting-dcb.c
+++ b/libnm-core/nm-setting-dcb.c
@@ -893,7 +893,7 @@ nm_setting_dcb_init(NMSettingDcb *self)
NMSetting *
nm_setting_dcb_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_DCB, NULL);
+ return g_object_new(NM_TYPE_SETTING_DCB, NULL);
}
static void
diff --git a/libnm-core/nm-setting-dummy.c b/libnm-core/nm-setting-dummy.c
index 3f5922f628..04cb59593c 100644
--- a/libnm-core/nm-setting-dummy.c
+++ b/libnm-core/nm-setting-dummy.c
@@ -52,7 +52,7 @@ nm_setting_dummy_init(NMSettingDummy *setting)
NMSetting *
nm_setting_dummy_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_DUMMY, NULL);
+ return g_object_new(NM_TYPE_SETTING_DUMMY, NULL);
}
static void
diff --git a/libnm-core/nm-setting-generic.c b/libnm-core/nm-setting-generic.c
index 50269a19d1..cb59d7f987 100644
--- a/libnm-core/nm-setting-generic.c
+++ b/libnm-core/nm-setting-generic.c
@@ -48,7 +48,7 @@ nm_setting_generic_init(NMSettingGeneric *setting)
NMSetting *
nm_setting_generic_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_GENERIC, NULL);
+ return g_object_new(NM_TYPE_SETTING_GENERIC, NULL);
}
static void
diff --git a/libnm-core/nm-setting-gsm.c b/libnm-core/nm-setting-gsm.c
index 1c31217cdf..38d13d3eab 100644
--- a/libnm-core/nm-setting-gsm.c
+++ b/libnm-core/nm-setting-gsm.c
@@ -604,7 +604,7 @@ nm_setting_gsm_init(NMSettingGsm *setting)
NMSetting *
nm_setting_gsm_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_GSM, NULL);
+ return g_object_new(NM_TYPE_SETTING_GSM, NULL);
}
static void
diff --git a/libnm-core/nm-setting-hostname.c b/libnm-core/nm-setting-hostname.c
new file mode 100644
index 0000000000..8218978705
--- /dev/null
+++ b/libnm-core/nm-setting-hostname.c
@@ -0,0 +1,339 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include "nm-setting-hostname.h"
+
+#include "nm-setting-private.h"
+#include "nm-utils-private.h"
+
+/**
+ * SECTION:nm-setting-hostname
+ * @short_description: Contains properties related to the hostname
+ * @include: nm-setting-hostname.h
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE(NMSettingHostname,
+ PROP_PRIORITY,
+ PROP_FROM_DHCP,
+ PROP_FROM_DNS_LOOKUP,
+ PROP_ONLY_FROM_DEFAULT, );
+
+/**
+ * NMSettingHostname:
+ *
+ * Hostname settings
+ *
+ * Since: 1.30
+ */
+struct _NMSettingHostname {
+ NMSetting parent;
+ int priority;
+ NMTernary from_dhcp;
+ NMTernary from_dns_lookup;
+ NMTernary only_from_default;
+};
+
+struct _NMSettingHostnameClass {
+ NMSettingClass parent;
+};
+
+G_DEFINE_TYPE(NMSettingHostname, nm_setting_hostname, NM_TYPE_SETTING)
+
+/**
+ * nm_setting_hostname_get_priority:
+ * @setting: the #NMSettingHostname
+ *
+ * Returns the value contained in the #NMSettingHostname:priority
+ * property.
+ *
+ * Returns: the 'priority' property value
+ *
+ * Since: 1.30
+ **/
+int
+nm_setting_hostname_get_priority(NMSettingHostname *setting)
+{
+ g_return_val_if_fail(NM_IS_SETTING_HOSTNAME(setting), 0);
+
+ return setting->priority;
+}
+
+/**
+ * nm_setting_hostname_get_from_dhcp:
+ * @setting: the #NMSettingHostname
+ *
+ * Returns the value contained in the #NMSettingHostname:from-dhcp
+ * property.
+ *
+ * Returns: the 'from-dhcp' property value
+ *
+ * Since: 1.30
+ **/
+NMTernary
+nm_setting_hostname_get_from_dhcp(NMSettingHostname *setting)
+{
+ g_return_val_if_fail(NM_IS_SETTING_HOSTNAME(setting), NM_TERNARY_DEFAULT);
+
+ return setting->from_dhcp;
+}
+
+/**
+ * nm_setting_hostname_get_from_dns_lookup:
+ * @setting: the #NMSettingHostname
+ *
+ * Returns the value contained in the #NMSettingHostname:from-dns-lookup
+ * property.
+ *
+ * Returns: the 'from-dns-lookup' property value
+ *
+ * Since: 1.30
+ **/
+NMTernary
+nm_setting_hostname_get_from_dns_lookup(NMSettingHostname *setting)
+{
+ g_return_val_if_fail(NM_IS_SETTING_HOSTNAME(setting), NM_TERNARY_DEFAULT);
+
+ return setting->from_dns_lookup;
+}
+
+/**
+ * nm_setting_hostname_get_only_from_default:
+ * @setting: the #NMSettingHostname
+ *
+ * Returns the value contained in the #NMSettingHostname:only-from-default
+ * property.
+ *
+ * Returns: the 'only-from-default' property value
+ *
+ * Since: 1.30
+ **/
+NMTernary
+nm_setting_hostname_get_only_from_default(NMSettingHostname *setting)
+{
+ g_return_val_if_fail(NM_IS_SETTING_HOSTNAME(setting), NM_TERNARY_DEFAULT);
+
+ return setting->only_from_default;
+}
+
+/*****************************************************************************/
+
+static void
+get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ NMSettingHostname *self = NM_SETTING_HOSTNAME(object);
+
+ switch (prop_id) {
+ case PROP_PRIORITY:
+ g_value_set_int(value, self->priority);
+ break;
+ case PROP_FROM_DHCP:
+ g_value_set_enum(value, self->from_dhcp);
+ break;
+ case PROP_FROM_DNS_LOOKUP:
+ g_value_set_enum(value, self->from_dns_lookup);
+ break;
+ case PROP_ONLY_FROM_DEFAULT:
+ g_value_set_enum(value, self->only_from_default);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ NMSettingHostname *self = NM_SETTING_HOSTNAME(object);
+
+ switch (prop_id) {
+ case PROP_PRIORITY:
+ self->priority = g_value_get_int(value);
+ break;
+ case PROP_FROM_DHCP:
+ self->from_dhcp = g_value_get_enum(value);
+ break;
+ case PROP_FROM_DNS_LOOKUP:
+ self->from_dns_lookup = g_value_get_enum(value);
+ break;
+ case PROP_ONLY_FROM_DEFAULT:
+ self->only_from_default = g_value_get_enum(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_hostname_init(NMSettingHostname *setting)
+{
+ setting->from_dhcp = NM_TERNARY_DEFAULT;
+ setting->from_dns_lookup = NM_TERNARY_DEFAULT;
+ setting->only_from_default = NM_TERNARY_DEFAULT;
+}
+
+/**
+ * nm_setting_hostname_new:
+ *
+ * Creates a new #NMSettingHostname object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingHostname object
+ *
+ * Since: 1.30
+ **/
+NMSetting *
+nm_setting_hostname_new(void)
+{
+ return g_object_new(NM_TYPE_SETTING_HOSTNAME, NULL);
+}
+
+static void
+nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
+{
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+
+ /**
+ * NMSettingHostname:priority
+ *
+ * The relative priority of this connection to determine the
+ * system hostname. A lower numerical value is better (higher
+ * priority). A connection with higher priority is considered
+ * before connections with lower priority.
+ *
+ * If the value is zero, it can be overridden by a global value
+ * from NetworkManager configuration. If the property doesn't have
+ * a value in the global configuration, the value is assumed to be
+ * 100.
+ *
+ * Negative values have the special effect of excluding other
+ * connections with a greater numerical priority value; so in
+ * presence of at least one negative priority, only connections
+ * with the lowest priority value will be used to determine the
+ * hostname.
+ *
+ * Since: 1.30
+ **/
+ /* ---ifcfg-rh---
+ * property: priority
+ * variable: HOSTNAME_PRIORITY(+)
+ * default: missing variable means global value or 100
+ * description: hostname priority
+ * example: HOSTNAME_PRIORITY=50
+ * ---end---
+ */
+ obj_properties[PROP_PRIORITY] = g_param_spec_int(NM_SETTING_HOSTNAME_PRIORITY,
+ "",
+ "",
+ G_MININT32,
+ G_MAXINT32,
+ 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ /**
+ * NMSettingHostname:from-dhcp
+ *
+ * Whether the system hostname can be determined from DHCP on
+ * this connection.
+ *
+ * When set to %NM_TERNARY_DEFAULT, the value from global configuration
+ * is used. If the property doesn't have a value in the global
+ * configuration, NetworkManager assumes the value to be %NM_TERNARY_TRUE.
+ *
+ * Since: 1.30
+ **/
+ /* ---ifcfg-rh---
+ * property: from-dhcp
+ * variable: HOSTNAME_FROM_DHCP(+)
+ * default: missing variable means global default or 1
+ * description: whether the system hostname can be determined from DHCP
+ * example: HOSTNAME_FROM_DHCP=0,1
+ * ---end---
+ */
+ obj_properties[PROP_FROM_DHCP] = g_param_spec_enum(
+ NM_SETTING_HOSTNAME_FROM_DHCP,
+ "",
+ "",
+ NM_TYPE_TERNARY,
+ NM_TERNARY_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ /**
+ * NMSettingHostname:from-dns-lookup
+ *
+ * Whether the system hostname can be determined from reverse
+ * DNS lookup of addresses on this device.
+ *
+ * When set to %NM_TERNARY_DEFAULT, the value from global configuration
+ * is used. If the property doesn't have a value in the global
+ * configuration, NetworkManager assumes the value to be %NM_TERNARY_TRUE.
+ *
+ * Since: 1.30
+ **/
+ /* ---ifcfg-rh---
+ * property: from-dhcp
+ * variable: HOSTNAME_FROM_DNS_LOOKUP(+)
+ * default: missing variable means global default or 1
+ * description: whether the system hostname can be determined from reverse
+ * DNS lookup
+ * example: HOSTNAME_FROM_DNS_LOOKUP=0,1
+ * ---end---
+ */
+ obj_properties[PROP_FROM_DNS_LOOKUP] = g_param_spec_enum(
+ NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
+ "",
+ "",
+ NM_TYPE_TERNARY,
+ NM_TERNARY_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ /**
+ * NMSettingHostname:only-from-default
+ *
+ * If set to %NM_TERNARY_TRUE, NetworkManager attempts to get
+ * the hostname via DHCPv4/DHCPv6 or reverse DNS lookup on this
+ * device only when the device has the default route for the given
+ * address family (IPv4/IPv6).
+ *
+ * If set to %NM_TERNARY_FALSE, the hostname can be set from this
+ * device even if it doesn't have the default route.
+ *
+ * When set to %NM_TERNARY_DEFAULT, the value from global configuration
+ * is used. If the property doesn't have a value in the global
+ * configuration, NetworkManager assumes the value to be %NM_TERNARY_TRUE.
+ *
+ * Since: 1.30
+ **/
+ /* ---ifcfg-rh---
+ * property: only-best-device
+ * variable: HOSTNAME_ONLY_FROM_DEFAULT(+)
+ * default: missing variable means global default or 1
+ * description: whether the hostname can be determined only from
+ * devices with the default route
+ * example: HOSTNAME_ONLY_FROM_DEFAULT=0,1
+ * ---end---
+ */
+ obj_properties[PROP_ONLY_FROM_DEFAULT] = g_param_spec_enum(
+ NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT,
+ "",
+ "",
+ NM_TYPE_TERNARY,
+ NM_TERNARY_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_HOSTNAME);
+}
diff --git a/libnm-core/nm-setting-hostname.h b/libnm-core/nm-setting-hostname.h
new file mode 100644
index 0000000000..184d76c483
--- /dev/null
+++ b/libnm-core/nm-setting-hostname.h
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#ifndef NM_SETTING_HOSTNAME_H
+#define NM_SETTING_HOSTNAME_H
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+ #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-setting.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_HOSTNAME (nm_setting_hostname_get_type())
+#define NM_SETTING_HOSTNAME(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTING_HOSTNAME, NMSettingHostname))
+#define NM_SETTING_HOSTNAME_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SETTING_HOSTNAME, NMSettingHostnameClass))
+#define NM_IS_SETTING_HOSTNAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTING_HOSTNAME))
+#define NM_IS_SETTING_HOSTNAME_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTING_HOSTNAME))
+#define NM_SETTING_HOSTNAME_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_SETTING_HOSTNAME, NMSettingHostnameClass))
+
+#define NM_SETTING_HOSTNAME_SETTING_NAME "hostname"
+
+#define NM_SETTING_HOSTNAME_PRIORITY "priority"
+#define NM_SETTING_HOSTNAME_FROM_DHCP "from-dhcp"
+#define NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP "from-dns-lookup"
+#define NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT "only-from-default"
+
+typedef struct _NMSettingHostnameClass NMSettingHostnameClass;
+
+NM_AVAILABLE_IN_1_30
+GType nm_setting_hostname_get_type(void);
+NM_AVAILABLE_IN_1_30
+NMSetting *nm_setting_hostname_new(void);
+
+NM_AVAILABLE_IN_1_30
+int nm_setting_hostname_get_priority(NMSettingHostname *setting);
+NM_AVAILABLE_IN_1_30
+NMTernary nm_setting_hostname_get_from_dhcp(NMSettingHostname *setting);
+NM_AVAILABLE_IN_1_30
+NMTernary nm_setting_hostname_get_from_dns_lookup(NMSettingHostname *setting);
+NM_AVAILABLE_IN_1_30
+NMTernary nm_setting_hostname_get_only_from_default(NMSettingHostname *setting);
+
+G_END_DECLS
+
+#endif /* NM_SETTING_HOSTNAME_H */
diff --git a/libnm-core/nm-setting-infiniband.c b/libnm-core/nm-setting-infiniband.c
index 7469f43785..02a92cad13 100644
--- a/libnm-core/nm-setting-infiniband.c
+++ b/libnm-core/nm-setting-infiniband.c
@@ -353,7 +353,7 @@ nm_setting_infiniband_init(NMSettingInfiniband *self)
NMSetting *
nm_setting_infiniband_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_INFINIBAND, NULL);
+ return g_object_new(NM_TYPE_SETTING_INFINIBAND, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ip-tunnel.c b/libnm-core/nm-setting-ip-tunnel.c
index e2f0b0cac0..e0eb25a373 100644
--- a/libnm-core/nm-setting-ip-tunnel.c
+++ b/libnm-core/nm-setting-ip-tunnel.c
@@ -617,7 +617,7 @@ nm_setting_ip_tunnel_init(NMSettingIPTunnel *self)
NMSetting *
nm_setting_ip_tunnel_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_IP_TUNNEL, NULL);
+ return g_object_new(NM_TYPE_SETTING_IP_TUNNEL, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ip4-config.c b/libnm-core/nm-setting-ip4-config.c
index 46579ba9da..53d8765b6f 100644
--- a/libnm-core/nm-setting-ip4-config.c
+++ b/libnm-core/nm-setting-ip4-config.c
@@ -594,7 +594,7 @@ nm_setting_ip4_config_init(NMSettingIP4Config *setting)
NMSetting *
nm_setting_ip4_config_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_IP4_CONFIG, NULL);
+ return g_object_new(NM_TYPE_SETTING_IP4_CONFIG, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ip6-config.c b/libnm-core/nm-setting-ip6-config.c
index c22e35883e..a5f5c721db 100644
--- a/libnm-core/nm-setting-ip6-config.c
+++ b/libnm-core/nm-setting-ip6-config.c
@@ -592,7 +592,7 @@ nm_setting_ip6_config_init(NMSettingIP6Config *setting)
NMSetting *
nm_setting_ip6_config_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_IP6_CONFIG, NULL);
+ return g_object_new(NM_TYPE_SETTING_IP6_CONFIG, NULL);
}
static void
diff --git a/libnm-core/nm-setting-macsec.c b/libnm-core/nm-setting-macsec.c
index 6f185a9aa5..3e825c3a86 100644
--- a/libnm-core/nm-setting-macsec.c
+++ b/libnm-core/nm-setting-macsec.c
@@ -495,7 +495,7 @@ nm_setting_macsec_init(NMSettingMacsec *self)
NMSetting *
nm_setting_macsec_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_MACSEC, NULL);
+ return g_object_new(NM_TYPE_SETTING_MACSEC, NULL);
}
static void
diff --git a/libnm-core/nm-setting-macvlan.c b/libnm-core/nm-setting-macvlan.c
index eed137c396..5f8cb875b2 100644
--- a/libnm-core/nm-setting-macvlan.c
+++ b/libnm-core/nm-setting-macvlan.c
@@ -236,7 +236,7 @@ nm_setting_macvlan_init(NMSettingMacvlan *self)
NMSetting *
nm_setting_macvlan_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_MACVLAN, NULL);
+ return g_object_new(NM_TYPE_SETTING_MACVLAN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-match.c b/libnm-core/nm-setting-match.c
index 5709a403d8..598379ff05 100644
--- a/libnm-core/nm-setting-match.c
+++ b/libnm-core/nm-setting-match.c
@@ -683,7 +683,7 @@ nm_setting_match_init(NMSettingMatch *setting)
NMSetting *
nm_setting_match_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_MATCH, NULL);
+ return g_object_new(NM_TYPE_SETTING_MATCH, NULL);
}
static gboolean
diff --git a/libnm-core/nm-setting-olpc-mesh.c b/libnm-core/nm-setting-olpc-mesh.c
index e9efbe1ece..a39cbd1533 100644
--- a/libnm-core/nm-setting-olpc-mesh.c
+++ b/libnm-core/nm-setting-olpc-mesh.c
@@ -190,7 +190,7 @@ nm_setting_olpc_mesh_init(NMSettingOlpcMesh *setting)
NMSetting *
nm_setting_olpc_mesh_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OLPC_MESH, NULL);
+ return g_object_new(NM_TYPE_SETTING_OLPC_MESH, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ovs-bridge.c b/libnm-core/nm-setting-ovs-bridge.c
index 15eed0300f..6c3c931706 100644
--- a/libnm-core/nm-setting-ovs-bridge.c
+++ b/libnm-core/nm-setting-ovs-bridge.c
@@ -272,7 +272,7 @@ nm_setting_ovs_bridge_init(NMSettingOvsBridge *self)
NMSetting *
nm_setting_ovs_bridge_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OVS_BRIDGE, NULL);
+ return g_object_new(NM_TYPE_SETTING_OVS_BRIDGE, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ovs-dpdk.c b/libnm-core/nm-setting-ovs-dpdk.c
index d6bd88042b..6498cead40 100644
--- a/libnm-core/nm-setting-ovs-dpdk.c
+++ b/libnm-core/nm-setting-ovs-dpdk.c
@@ -109,7 +109,7 @@ nm_setting_ovs_dpdk_init(NMSettingOvsDpdk *self)
NMSetting *
nm_setting_ovs_dpdk_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OVS_DPDK, NULL);
+ return g_object_new(NM_TYPE_SETTING_OVS_DPDK, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ovs-external-ids.c b/libnm-core/nm-setting-ovs-external-ids.c
new file mode 100644
index 0000000000..9371c281b5
--- /dev/null
+++ b/libnm-core/nm-setting-ovs-external-ids.c
@@ -0,0 +1,536 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2017 - 2020 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include "nm-setting-ovs-external-ids.h"
+
+#include "nm-setting-private.h"
+#include "nm-utils-private.h"
+#include "nm-connection-private.h"
+
+#define MAX_NUM_KEYS 256
+
+/*****************************************************************************/
+
+/**
+ * SECTION:nm-setting-ovs-external-ids
+ * @short_description: External-IDs for OVS database
+ *
+ * The #NMSettingOvsExternalIDs object is a #NMSetting subclass that allow to
+ * configure external ids for OVS.
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE(NMSettingOvsExternalIDs, PROP_DATA, );
+
+typedef struct {
+ GHashTable * data;
+ const char **data_keys;
+} NMSettingOvsExternalIDsPrivate;
+
+/**
+ * NMSettingOvsExternalIDs:
+ *
+ * OVS External IDs Settings
+ */
+struct _NMSettingOvsExternalIDs {
+ NMSetting parent;
+ NMSettingOvsExternalIDsPrivate _priv;
+};
+
+struct _NMSettingOvsExternalIDsClass {
+ NMSettingClass parent;
+};
+
+G_DEFINE_TYPE(NMSettingOvsExternalIDs, nm_setting_ovs_external_ids, NM_TYPE_SETTING)
+
+#define NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self) \
+ _NM_GET_PRIVATE(self, NMSettingOvsExternalIDs, NM_IS_SETTING_OVS_EXTERNAL_IDS)
+
+/*****************************************************************************/
+
+static gboolean
+_exid_key_char_is_regular(char ch)
+{
+ /* allow words of printable characters, plus some
+ * special characters, for example to support base64 encoding. */
+ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9')
+ || NM_IN_SET(ch, '-', '_', '+', '/', '=', '.');
+}
+
+/**
+ * nm_setting_ovs_external_ids_check_key:
+ * @key: (allow-none): the key to check
+ * @error: a #GError, %NULL to ignore.
+ *
+ * Checks whether @key is a valid key for OVS' external-ids.
+ * This means, the key cannot be %NULL, not too large and valid ASCII.
+ * Also, only digits and numbers are allowed with a few special
+ * characters. They key must also not start with "NM.".
+ *
+ * Since: 1.30
+ *
+ * Returns: %TRUE if @key is a valid user data key.
+ */
+gboolean
+nm_setting_ovs_external_ids_check_key(const char *key, GError **error)
+{
+ gsize len;
+
+ g_return_val_if_fail(!error || !*error, FALSE);
+
+ if (!key || !key[0]) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("missing key"));
+ return FALSE;
+ }
+ len = strlen(key);
+ if (len > 255u) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("key is too long"));
+ return FALSE;
+ }
+ if (!g_utf8_validate(key, len, NULL)) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("key must be UTF8"));
+ return FALSE;
+ }
+ if (!NM_STRCHAR_ALL(key, ch, _exid_key_char_is_regular(ch))) {
+ /* Probably OVS is more forgiving about what makes a valid key for
+ * an external-id. However, we are strict (at least, for now). */
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("key contains invalid characters"));
+ return FALSE;
+ }
+
+ if (NM_STR_HAS_PREFIX(key, NM_OVS_EXTERNAL_ID_NM_PREFIX)) {
+ /* these keys are reserved. */
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("key cannot start with \"NM.\""));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * nm_setting_ovs_external_ids_check_val:
+ * @val: (allow-none): the value to check
+ * @error: a #GError, %NULL to ignore.
+ *
+ * Checks whether @val is a valid user data value. This means,
+ * value is not %NULL, not too large and valid UTF-8.
+ *
+ * Since: 1.30
+ *
+ * Returns: %TRUE if @val is a valid user data value.
+ */
+gboolean
+nm_setting_ovs_external_ids_check_val(const char *val, GError **error)
+{
+ gsize len;
+
+ g_return_val_if_fail(!error || !*error, FALSE);
+
+ if (!val) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("value is missing"));
+ return FALSE;
+ }
+
+ len = strlen(val);
+ if (len > (8u * 1024u)) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("value is too large"));
+ return FALSE;
+ }
+
+ if (!g_utf8_validate(val, len, NULL)) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("value is not valid UTF8"));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/*****************************************************************************/
+
+static GHashTable *
+_create_data_hash(void)
+{
+ return g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, g_free);
+}
+
+GHashTable *
+_nm_setting_ovs_external_ids_get_data(NMSettingOvsExternalIDs *self)
+{
+ return NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self)->data;
+}
+
+/**
+ * nm_setting_ovs_external_ids_get_data_keys:
+ * @setting: the #NMSettingOvsExternalIDs
+ * @out_len: (out): the length of the returned array
+ *
+ * Returns: (array length=out_len) (transfer none): a
+ * %NULL-terminated array containing each key from the table.
+ **/
+const char *const *
+nm_setting_ovs_external_ids_get_data_keys(NMSettingOvsExternalIDs *setting, guint *out_len)
+{
+ NMSettingOvsExternalIDs * self = setting;
+ NMSettingOvsExternalIDsPrivate *priv;
+
+ g_return_val_if_fail(NM_IS_SETTING_OVS_EXTERNAL_IDS(self), NULL);
+
+ priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ if (priv->data_keys) {
+ NM_SET_OUT(out_len, g_hash_table_size(priv->data));
+ return priv->data_keys;
+ }
+
+ priv->data_keys = nm_utils_strdict_get_keys(priv->data, TRUE, out_len);
+
+ /* don't return %NULL, but hijack the @data_keys fields as a pseudo
+ * empty strv array. */
+ return priv->data_keys ?: ((const char **) &priv->data_keys);
+}
+
+/*****************************************************************************/
+
+/**
+ * nm_setting_ovs_external_ids_get_data:
+ * @setting: the #NMSettingOvsExternalIDs instance
+ * @key: the external-id to lookup
+ *
+ * Since: 1.30
+ *
+ * Returns: (transfer none): the value associated with @key or %NULL if no such
+ * value exists.
+ */
+const char *
+nm_setting_ovs_external_ids_get_data(NMSettingOvsExternalIDs *setting, const char *key)
+{
+ NMSettingOvsExternalIDs * self = setting;
+ NMSettingOvsExternalIDsPrivate *priv;
+
+ g_return_val_if_fail(NM_IS_SETTING_OVS_EXTERNAL_IDS(self), NULL);
+ g_return_val_if_fail(key, NULL);
+
+ priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ if (!priv->data)
+ return NULL;
+
+ return g_hash_table_lookup(priv->data, key);
+}
+
+/**
+ * nm_setting_ovs_external_ids_set_data:
+ * @setting: the #NMSettingOvsExternalIDs instance
+ * @key: the key to set
+ * @val: (allow-none): the value to set or %NULL to clear a key.
+ *
+ * Since: 1.30
+ */
+void
+nm_setting_ovs_external_ids_set_data(NMSettingOvsExternalIDs *setting,
+ const char * key,
+ const char * val)
+{
+ NMSettingOvsExternalIDs * self = setting;
+ NMSettingOvsExternalIDsPrivate *priv;
+
+ g_return_if_fail(NM_IS_SETTING_OVS_EXTERNAL_IDS(self));
+
+ priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ if (!val) {
+ if (priv->data && g_hash_table_remove(priv->data, key))
+ goto out_changed;
+ return;
+ }
+
+ if (priv->data) {
+ const char *val2;
+
+ if (g_hash_table_lookup_extended(priv->data, key, NULL, (gpointer *) &val2)) {
+ if (nm_streq(val, val2))
+ return;
+ }
+ } else
+ priv->data = _create_data_hash();
+
+ g_hash_table_insert(priv->data, g_strdup(key), g_strdup(val));
+
+out_changed:
+ nm_clear_g_free(&priv->data_keys);
+ _notify(self, PROP_DATA);
+}
+
+/*****************************************************************************/
+
+static gboolean
+verify(NMSetting *setting, NMConnection *connection, GError **error)
+{
+ NMSettingOvsExternalIDs * self = NM_SETTING_OVS_EXTERNAL_IDS(setting);
+ NMSettingOvsExternalIDsPrivate *priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ if (priv->data) {
+ gs_free_error GError *local = NULL;
+ GHashTableIter iter;
+ const char * key;
+ const char * val;
+
+ g_hash_table_iter_init(&iter, priv->data);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &val)) {
+ if (!nm_setting_ovs_external_ids_check_key(key, &local)) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_FAILED,
+ _("invalid key \"%s\": %s"),
+ key,
+ local->message);
+ } else if (!nm_setting_ovs_external_ids_check_val(val, &local)) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_FAILED,
+ _("invalid value for \"%s\": %s"),
+ key,
+ local->message);
+ } else
+ continue;
+ g_prefix_error(error,
+ "%s.%s: ",
+ NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+ NM_SETTING_OVS_EXTERNAL_IDS_DATA);
+ return FALSE;
+ }
+ }
+
+ if (priv->data && g_hash_table_size(priv->data) > MAX_NUM_KEYS) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("maximum number of user data entries reached (%u instead of %u)"),
+ g_hash_table_size(priv->data),
+ (unsigned) MAX_NUM_KEYS);
+ g_prefix_error(error,
+ "%s.%s: ",
+ NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+ NM_SETTING_OVS_EXTERNAL_IDS_DATA);
+ return FALSE;
+ }
+
+ if (connection) {
+ const char *type;
+
+ type = nm_connection_get_connection_type(connection);
+ if (!type) {
+ NMSetting *s_base;
+
+ s_base = _nm_connection_find_base_type_setting(connection);
+ if (s_base)
+ type = nm_setting_get_name(s_base);
+ }
+ if (!NM_IN_STRSET(type,
+ NM_SETTING_OVS_BRIDGE_SETTING_NAME,
+ NM_SETTING_OVS_PORT_SETTING_NAME,
+ NM_SETTING_OVS_INTERFACE_SETTING_NAME)) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("OVS external IDs can only be added to a profile of type OVS "
+ "bridge/port/interface"));
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static NMTernary
+compare_property(const NMSettInfoSetting *sett_info,
+ guint property_idx,
+ NMConnection * con_a,
+ NMSetting * set_a,
+ NMConnection * con_b,
+ NMSetting * set_b,
+ NMSettingCompareFlags flags)
+{
+ NMSettingOvsExternalIDsPrivate *priv;
+ NMSettingOvsExternalIDsPrivate *pri2;
+
+ if (nm_streq(sett_info->property_infos[property_idx].name, NM_SETTING_OVS_EXTERNAL_IDS_DATA)) {
+ if (NM_FLAGS_HAS(flags, NM_SETTING_COMPARE_FLAG_INFERRABLE))
+ return NM_TERNARY_DEFAULT;
+
+ if (!set_b)
+ return TRUE;
+
+ priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(NM_SETTING_OVS_EXTERNAL_IDS(set_a));
+ pri2 = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(NM_SETTING_OVS_EXTERNAL_IDS(set_b));
+ return nm_utils_hashtable_equal(priv->data, pri2->data, TRUE, g_str_equal);
+ }
+
+ return NM_SETTING_CLASS(nm_setting_ovs_external_ids_parent_class)
+ ->compare_property(sett_info, property_idx, con_a, set_a, con_b, set_b, flags);
+}
+
+/*****************************************************************************/
+
+static void
+get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ NMSettingOvsExternalIDs * self = NM_SETTING_OVS_EXTERNAL_IDS(object);
+ NMSettingOvsExternalIDsPrivate *priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+ GHashTableIter iter;
+ GHashTable * data;
+ const char * key;
+ const char * val;
+
+ switch (prop_id) {
+ case PROP_DATA:
+ data = _create_data_hash();
+ if (priv->data) {
+ g_hash_table_iter_init(&iter, priv->data);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &val))
+ g_hash_table_insert(data, g_strdup(key), g_strdup(val));
+ }
+ g_value_take_boxed(value, data);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ NMSettingOvsExternalIDs * self = NM_SETTING_OVS_EXTERNAL_IDS(object);
+ NMSettingOvsExternalIDsPrivate *priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ switch (prop_id) {
+ case PROP_DATA:
+ {
+ gs_unref_hashtable GHashTable *old = NULL;
+ GHashTableIter iter;
+ GHashTable * data;
+ const char * key;
+ const char * val;
+
+ nm_clear_g_free(&priv->data_keys);
+
+ old = g_steal_pointer(&priv->data);
+
+ data = g_value_get_boxed(value);
+ if (nm_g_hash_table_size(data) <= 0)
+ return;
+
+ priv->data = _create_data_hash();
+ g_hash_table_iter_init(&iter, data);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &val))
+ g_hash_table_insert(priv->data, g_strdup(key), g_strdup(val));
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_ovs_external_ids_init(NMSettingOvsExternalIDs *self)
+{}
+
+/**
+ * nm_setting_ovs_external_ids_new:
+ *
+ * Creates a new #NMSettingOvsExternalIDs object with default values.
+ *
+ * Returns: (transfer full) (type NMSettingOvsExternalIDs): the new empty
+ * #NMSettingOvsExternalIDs object
+ *
+ * Since: 1.30
+ */
+NMSetting *
+nm_setting_ovs_external_ids_new(void)
+{
+ return g_object_new(NM_TYPE_SETTING_OVS_EXTERNAL_IDS, NULL);
+}
+
+static void
+finalize(GObject *object)
+{
+ NMSettingOvsExternalIDs * self = NM_SETTING_OVS_EXTERNAL_IDS(object);
+ NMSettingOvsExternalIDsPrivate *priv = NM_SETTING_OVS_EXTERNAL_IDS_GET_PRIVATE(self);
+
+ g_free(priv->data_keys);
+ if (priv->data)
+ g_hash_table_unref(priv->data);
+
+ G_OBJECT_CLASS(nm_setting_ovs_external_ids_parent_class)->finalize(object);
+}
+
+static void
+nm_setting_ovs_external_ids_class_init(NMSettingOvsExternalIDsClass *klass)
+{
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GArray * properties_override = _nm_sett_info_property_override_create_array();
+
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+ object_class->finalize = finalize;
+
+ setting_class->compare_property = compare_property;
+ setting_class->verify = verify;
+
+ /**
+ * NMSettingOvsExternalIDs:data: (type GHashTable(utf8,utf8))
+ *
+ * A dictionary of key/value pairs with exernal-ids for OVS.
+ *
+ * Since: 1.30
+ **/
+ obj_properties[PROP_DATA] = g_param_spec_boxed(NM_SETTING_OVS_EXTERNAL_IDS_DATA,
+ "",
+ "",
+ G_TYPE_HASH_TABLE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_properties_override_gobj(properties_override,
+ obj_properties[PROP_DATA],
+ &nm_sett_info_propert_type_strdict);
+
+ g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+ _nm_setting_class_commit_full(setting_class,
+ NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
+ NULL,
+ properties_override);
+}
diff --git a/libnm-core/nm-setting-ovs-external-ids.h b/libnm-core/nm-setting-ovs-external-ids.h
new file mode 100644
index 0000000000..02b902bd2b
--- /dev/null
+++ b/libnm-core/nm-setting-ovs-external-ids.h
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2017 - 2020 Red Hat, Inc.
+ */
+
+#ifndef __NM_SETTING_OVS_EXTERNAL_IDS_H__
+#define __NM_SETTING_OVS_EXTERNAL_IDS_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+ #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-setting.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_OVS_EXTERNAL_IDS (nm_setting_ovs_external_ids_get_type())
+#define NM_SETTING_OVS_EXTERNAL_IDS(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTING_OVS_EXTERNAL_IDS, NMSettingOvsExternalIDs))
+#define NM_SETTING_OVS_EXTERNAL_IDS_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), \
+ NM_TYPE_SETTING_OVS_EXTERNAL_IDS, \
+ NMSettingOvsExternalIDsClass))
+#define NM_IS_SETTING_OVS_EXTERNAL_IDS(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTING_OVS_EXTERNAL_IDS))
+#define NM_IS_SETTING_OVS_EXTERNAL_IDS_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTING_OVS_EXTERNAL_IDS))
+#define NM_SETTING_OVS_EXTERNAL_IDS_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), \
+ NM_TYPE_SETTING_OVS_EXTERNAL_IDS, \
+ NMSettingOvsExternalIDsClass))
+
+#define NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME "ovs-external-ids"
+
+#define NM_SETTING_OVS_EXTERNAL_IDS_DATA "data"
+
+typedef struct _NMSettingOvsExternalIDsClass NMSettingOvsExternalIDsClass;
+
+NM_AVAILABLE_IN_1_30
+GType nm_setting_ovs_external_ids_get_type(void);
+
+NM_AVAILABLE_IN_1_30
+NMSetting *nm_setting_ovs_external_ids_new(void);
+
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_30
+const char *const *nm_setting_ovs_external_ids_get_data_keys(NMSettingOvsExternalIDs *setting,
+ guint * out_len);
+
+NM_AVAILABLE_IN_1_30
+const char *nm_setting_ovs_external_ids_get_data(NMSettingOvsExternalIDs *setting, const char *key);
+
+NM_AVAILABLE_IN_1_30
+void nm_setting_ovs_external_ids_set_data(NMSettingOvsExternalIDs *setting,
+ const char * key,
+ const char * val);
+
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_30
+gboolean nm_setting_ovs_external_ids_check_key(const char *key, GError **error);
+NM_AVAILABLE_IN_1_30
+gboolean nm_setting_ovs_external_ids_check_val(const char *val, GError **error);
+
+G_END_DECLS
+
+#endif /* __NM_SETTING_OVS_EXTERNAL_IDS_H__ */
diff --git a/libnm-core/nm-setting-ovs-interface.c b/libnm-core/nm-setting-ovs-interface.c
index 216078891d..7c2da0f504 100644
--- a/libnm-core/nm-setting-ovs-interface.c
+++ b/libnm-core/nm-setting-ovs-interface.c
@@ -382,7 +382,7 @@ nm_setting_ovs_interface_init(NMSettingOvsInterface *self)
NMSetting *
nm_setting_ovs_interface_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OVS_INTERFACE, NULL);
+ return g_object_new(NM_TYPE_SETTING_OVS_INTERFACE, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ovs-patch.c b/libnm-core/nm-setting-ovs-patch.c
index 8ea4bbb2e7..feff0fdb59 100644
--- a/libnm-core/nm-setting-ovs-patch.c
+++ b/libnm-core/nm-setting-ovs-patch.c
@@ -142,7 +142,7 @@ nm_setting_ovs_patch_init(NMSettingOvsPatch *self)
NMSetting *
nm_setting_ovs_patch_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OVS_PATCH, NULL);
+ return g_object_new(NM_TYPE_SETTING_OVS_PATCH, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ovs-port.c b/libnm-core/nm-setting-ovs-port.c
index beae8c85aa..50b6bf9b21 100644
--- a/libnm-core/nm-setting-ovs-port.c
+++ b/libnm-core/nm-setting-ovs-port.c
@@ -343,7 +343,7 @@ nm_setting_ovs_port_init(NMSettingOvsPort *self)
NMSetting *
nm_setting_ovs_port_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_OVS_PORT, NULL);
+ return g_object_new(NM_TYPE_SETTING_OVS_PORT, NULL);
}
static void
diff --git a/libnm-core/nm-setting-ppp.c b/libnm-core/nm-setting-ppp.c
index 6c7fa2780e..3f36c0104a 100644
--- a/libnm-core/nm-setting-ppp.c
+++ b/libnm-core/nm-setting-ppp.c
@@ -512,7 +512,7 @@ nm_setting_ppp_init(NMSettingPpp *self)
NMSetting *
nm_setting_ppp_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_PPP, NULL);
+ return g_object_new(NM_TYPE_SETTING_PPP, NULL);
}
static void
diff --git a/libnm-core/nm-setting-pppoe.c b/libnm-core/nm-setting-pppoe.c
index b86adcc1a6..40ce2f8917 100644
--- a/libnm-core/nm-setting-pppoe.c
+++ b/libnm-core/nm-setting-pppoe.c
@@ -254,7 +254,7 @@ nm_setting_pppoe_init(NMSettingPppoe *setting)
NMSetting *
nm_setting_pppoe_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_PPPOE, NULL);
+ return g_object_new(NM_TYPE_SETTING_PPPOE, NULL);
}
static void
diff --git a/libnm-core/nm-setting-private.h b/libnm-core/nm-setting-private.h
index efbfc274bc..8ae2768e8e 100644
--- a/libnm-core/nm-setting-private.h
+++ b/libnm-core/nm-setting-private.h
@@ -20,7 +20,6 @@
/*****************************************************************************/
NMSettingPriority _nm_setting_get_base_type_priority(NMSetting *setting);
-NMSettingPriority _nm_setting_type_get_base_type_priority(GType type);
int _nm_setting_compare_priority(gconstpointer a, gconstpointer b);
/*****************************************************************************/
diff --git a/libnm-core/nm-setting-proxy.c b/libnm-core/nm-setting-proxy.c
index df91fdd0e8..5f643b53de 100644
--- a/libnm-core/nm-setting-proxy.c
+++ b/libnm-core/nm-setting-proxy.c
@@ -262,7 +262,7 @@ nm_setting_proxy_init(NMSettingProxy *self)
NMSetting *
nm_setting_proxy_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_PROXY, NULL);
+ return g_object_new(NM_TYPE_SETTING_PROXY, NULL);
}
static void
diff --git a/libnm-core/nm-setting-serial.c b/libnm-core/nm-setting-serial.c
index 6a0c7792e9..ce78a20dc5 100644
--- a/libnm-core/nm-setting-serial.c
+++ b/libnm-core/nm-setting-serial.c
@@ -223,7 +223,7 @@ nm_setting_serial_init(NMSettingSerial *self)
NMSetting *
nm_setting_serial_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_SERIAL, NULL);
+ return g_object_new(NM_TYPE_SETTING_SERIAL, NULL);
}
static void
diff --git a/libnm-core/nm-setting-sriov.c b/libnm-core/nm-setting-sriov.c
index 942ef6d415..094dbdb5ec 100644
--- a/libnm-core/nm-setting-sriov.c
+++ b/libnm-core/nm-setting-sriov.c
@@ -1222,7 +1222,7 @@ nm_setting_sriov_init(NMSettingSriov *setting)
NMSetting *
nm_setting_sriov_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_SRIOV, NULL);
+ return g_object_new(NM_TYPE_SETTING_SRIOV, NULL);
}
static void
diff --git a/libnm-core/nm-setting-tc-config.c b/libnm-core/nm-setting-tc-config.c
index 0a7c9dae06..000a51a2e7 100644
--- a/libnm-core/nm-setting-tc-config.c
+++ b/libnm-core/nm-setting-tc-config.c
@@ -1778,7 +1778,7 @@ nm_setting_tc_config_init(NMSettingTCConfig *self)
NMSetting *
nm_setting_tc_config_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_TC_CONFIG, NULL);
+ return g_object_new(NM_TYPE_SETTING_TC_CONFIG, NULL);
}
static void
diff --git a/libnm-core/nm-setting-team-port.c b/libnm-core/nm-setting-team-port.c
index 8fff5bdc9f..473d3b61b5 100644
--- a/libnm-core/nm-setting-team-port.c
+++ b/libnm-core/nm-setting-team-port.c
@@ -503,7 +503,7 @@ nm_setting_team_port_init(NMSettingTeamPort *setting)
NMSetting *
nm_setting_team_port_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_TEAM_PORT, NULL);
+ return g_object_new(NM_TYPE_SETTING_TEAM_PORT, NULL);
}
static void
diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c
index 157763698a..e4eb72a3b7 100644
--- a/libnm-core/nm-setting-team.c
+++ b/libnm-core/nm-setting-team.c
@@ -1459,7 +1459,7 @@ nm_setting_team_init(NMSettingTeam *setting)
NMSetting *
nm_setting_team_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_TEAM, NULL);
+ return g_object_new(NM_TYPE_SETTING_TEAM, NULL);
}
static void
diff --git a/libnm-core/nm-setting-tun.c b/libnm-core/nm-setting-tun.c
index bfe3f9be1c..1cee2a0491 100644
--- a/libnm-core/nm-setting-tun.c
+++ b/libnm-core/nm-setting-tun.c
@@ -266,7 +266,7 @@ nm_setting_tun_init(NMSettingTun *self)
NMSetting *
nm_setting_tun_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_TUN, NULL);
+ return g_object_new(NM_TYPE_SETTING_TUN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-user.c b/libnm-core/nm-setting-user.c
index 3f0e03fb2a..6480b8872f 100644
--- a/libnm-core/nm-setting-user.c
+++ b/libnm-core/nm-setting-user.c
@@ -288,7 +288,7 @@ nm_setting_user_set_data(NMSettingUser *setting, const char *key, const char *va
NMSettingUserPrivate *priv;
gboolean changed = FALSE;
- g_return_val_if_fail(NM_IS_SETTING(self), FALSE);
+ g_return_val_if_fail(NM_IS_SETTING_USER(self), FALSE);
g_return_val_if_fail(!error || !*error, FALSE);
if (!nm_setting_user_check_key(key, error))
@@ -416,11 +416,11 @@ compare_property(const NMSettInfoSetting *sett_info,
priv = NM_SETTING_USER_GET_PRIVATE(NM_SETTING_USER(set_a));
pri2 = NM_SETTING_USER_GET_PRIVATE(NM_SETTING_USER(set_b));
- return nm_utils_hash_table_equal(priv->data, pri2->data, TRUE, g_str_equal)
- && nm_utils_hash_table_equal(priv->data_invalid,
- pri2->data_invalid,
- TRUE,
- g_str_equal);
+ return nm_utils_hashtable_equal(priv->data, pri2->data, TRUE, g_str_equal)
+ && nm_utils_hashtable_equal(priv->data_invalid,
+ pri2->data_invalid,
+ TRUE,
+ g_str_equal);
}
return NM_SETTING_CLASS(nm_setting_user_parent_class)
@@ -523,7 +523,7 @@ nm_setting_user_init(NMSettingUser *self)
NMSetting *
nm_setting_user_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_USER, NULL);
+ return g_object_new(NM_TYPE_SETTING_USER, NULL);
}
static void
diff --git a/libnm-core/nm-setting-veth.c b/libnm-core/nm-setting-veth.c
new file mode 100644
index 0000000000..bde87dc831
--- /dev/null
+++ b/libnm-core/nm-setting-veth.c
@@ -0,0 +1,194 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include "nm-setting-veth.h"
+
+#include <stdlib.h>
+
+#include "nm-utils.h"
+#include "nm-setting-connection.h"
+#include "nm-setting-private.h"
+#include "nm-connection-private.h"
+
+/**
+ * SECTION:nm-setting-veth
+ * @short_description: Describes connection properties for veth interfaces
+ *
+ * The #NMSettingVeth object is a #NMSetting subclass that describes properties
+ * necessary for connection to veth interfaces.
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_PEER, );
+
+typedef struct {
+ char *peer;
+} NMSettingVethPrivate;
+
+/**
+ * NMSettingVeth:
+ *
+ * Veth Settings
+ */
+struct _NMSettingVeth {
+ NMSetting parent;
+ NMSettingVethPrivate _priv;
+};
+
+struct _NMSettingVethClass {
+ NMSettingClass parent;
+};
+
+G_DEFINE_TYPE(NMSettingVeth, nm_setting_veth, NM_TYPE_SETTING)
+
+#define NM_SETTING_VETH_GET_PRIVATE(self) \
+ _NM_GET_PRIVATE(self, NMSettingVeth, NM_IS_SETTING_VETH, NMSetting)
+
+/*****************************************************************************/
+
+/**
+ * nm_setting_veth_get_peer:
+ * @setting: the #NMSettingVeth
+ *
+ * Returns: the #NMSettingVeth:peer property of the setting
+ *
+ * Since: 1.30
+ **/
+const char *
+nm_setting_veth_get_peer(NMSettingVeth *setting)
+{
+ g_return_val_if_fail(NM_IS_SETTING_VETH(setting), NULL);
+ return NM_SETTING_VETH_GET_PRIVATE(setting)->peer;
+}
+
+/*****************************************************************************/
+
+static gboolean
+verify(NMSetting *setting, NMConnection *connection, GError **error)
+{
+ NMSettingVethPrivate *priv = NM_SETTING_VETH_GET_PRIVATE(setting);
+
+ if (!priv->peer) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_MISSING_PROPERTY,
+ _("property is not specified"));
+ g_prefix_error(error, "%s.%s: ", NM_SETTING_VETH_SETTING_NAME, NM_SETTING_VETH_PEER);
+ return FALSE;
+ }
+
+ if (!nm_utils_ifname_valid(priv->peer, NMU_IFACE_KERNEL, NULL)) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("'%s' is not a valid interface name"),
+ priv->peer);
+ g_prefix_error(error, "%s.%s: ", NM_SETTING_VETH_SETTING_NAME, NM_SETTING_VETH_PEER);
+ return FALSE;
+ }
+
+ if (!_nm_connection_verify_required_interface_name(connection, error))
+ return FALSE;
+
+ return TRUE;
+}
+
+/*****************************************************************************/
+
+static void
+get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ NMSettingVeth * setting = NM_SETTING_VETH(object);
+ NMSettingVethPrivate *priv = NM_SETTING_VETH_GET_PRIVATE(setting);
+
+ switch (prop_id) {
+ case PROP_PEER:
+ g_value_set_string(value, priv->peer);
+ break;
+ }
+}
+
+static void
+set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+ NMSettingVeth * setting = NM_SETTING_VETH(object);
+ NMSettingVethPrivate *priv = NM_SETTING_VETH_GET_PRIVATE(setting);
+
+ switch (prop_id) {
+ case PROP_PEER:
+ g_free(priv->peer);
+ priv->peer = g_value_dup_string(value);
+ break;
+ }
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_veth_init(NMSettingVeth *setting)
+{}
+
+/**
+ * nm_setting_veth_new:
+ *
+ * Creates a new #NMSettingVeth object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingVeth object
+ *
+ * Since: 1.30
+ **/
+NMSetting *
+nm_setting_veth_new(void)
+{
+ return g_object_new(NM_TYPE_SETTING_VETH, NULL);
+}
+
+static void
+finalize(GObject *object)
+{
+ NMSettingVeth * setting = NM_SETTING_VETH(object);
+ NMSettingVethPrivate *priv = NM_SETTING_VETH_GET_PRIVATE(setting);
+
+ g_free(priv->peer);
+
+ G_OBJECT_CLASS(nm_setting_veth_parent_class)->finalize(object);
+}
+
+static void
+nm_setting_veth_class_init(NMSettingVethClass *klass)
+{
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+
+ g_type_class_add_private(klass, sizeof(NMSettingVethPrivate));
+
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+ object_class->finalize = finalize;
+
+ setting_class->verify = verify;
+
+ /**
+ * NMSettingVeth:peer:
+ *
+ * This property specifies the peer interface name of the veth. This
+ * property is mandatory.
+ *
+ * Since: 1.30
+ **/
+ obj_properties[PROP_PEER] = g_param_spec_string(NM_SETTING_VETH_PEER,
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE
+ | G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VETH);
+}
diff --git a/libnm-core/nm-setting-veth.h b/libnm-core/nm-setting-veth.h
new file mode 100644
index 0000000000..27f80910e4
--- /dev/null
+++ b/libnm-core/nm-setting-veth.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#ifndef __NM_SETTING_VETH_H__
+#define __NM_SETTING_VETH_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+ #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-setting.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_VETH (nm_setting_veth_get_type())
+#define NM_SETTING_VETH(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_SETTING_VETH, NMSettingVeth))
+#define NM_IS_SETTING_VETH(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_SETTING_VETH))
+#define NM_IS_SETTING_VETH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SETTING_VETH))
+#define NM_SETTING_VETH_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_SETTING_VETH, NMSettingVethClass))
+
+#define NM_SETTING_VETH_SETTING_NAME "veth"
+
+#define NM_SETTING_VETH_PEER "peer"
+
+typedef struct _NMSettingVethClass NMSettingVethClass;
+
+NM_AVAILABLE_IN_1_30
+GType nm_setting_veth_get_type(void);
+NM_AVAILABLE_IN_1_30
+NMSetting *nm_setting_veth_new(void);
+
+NM_AVAILABLE_IN_1_30
+const char *nm_setting_veth_get_peer(NMSettingVeth *setting);
+
+G_END_DECLS
+
+#endif /* __NM_SETTING_VETH_H__ */
diff --git a/libnm-core/nm-setting-vlan.c b/libnm-core/nm-setting-vlan.c
index 515602e3b1..8916be7d8f 100644
--- a/libnm-core/nm-setting-vlan.c
+++ b/libnm-core/nm-setting-vlan.c
@@ -803,7 +803,7 @@ nm_setting_vlan_init(NMSettingVlan *self)
NMSetting *
nm_setting_vlan_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_VLAN, NULL);
+ return g_object_new(NM_TYPE_SETTING_VLAN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-vpn.c b/libnm-core/nm-setting-vpn.c
index e926c65dae..49f320cdf8 100644
--- a/libnm-core/nm-setting-vpn.c
+++ b/libnm-core/nm-setting-vpn.c
@@ -1068,7 +1068,7 @@ nm_setting_vpn_init(NMSettingVpn *setting)
NMSetting *
nm_setting_vpn_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_VPN, NULL);
+ return g_object_new(NM_TYPE_SETTING_VPN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-vrf.c b/libnm-core/nm-setting-vrf.c
index 7114365942..7a1dcf50c2 100644
--- a/libnm-core/nm-setting-vrf.c
+++ b/libnm-core/nm-setting-vrf.c
@@ -128,7 +128,7 @@ nm_setting_vrf_init(NMSettingVrf *setting)
NMSetting *
nm_setting_vrf_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_VRF, NULL);
+ return g_object_new(NM_TYPE_SETTING_VRF, NULL);
}
static void
diff --git a/libnm-core/nm-setting-vxlan.c b/libnm-core/nm-setting-vxlan.c
index 213219baaa..72ac7ac352 100644
--- a/libnm-core/nm-setting-vxlan.c
+++ b/libnm-core/nm-setting-vxlan.c
@@ -312,43 +312,36 @@ nm_setting_vxlan_get_l3_miss(NMSettingVxlan *setting)
static gboolean
verify(NMSetting *setting, NMConnection *connection, GError **error)
{
- NMSettingVxlanPrivate *priv = NM_SETTING_VXLAN_GET_PRIVATE(setting);
- int family = AF_UNSPEC;
-
- if (!priv->remote) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_MISSING_PROPERTY,
- _("property is missing"));
- g_prefix_error(error, "%s.%s: ", NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_REMOTE);
- return FALSE;
- }
+ NMSettingVxlanPrivate *priv = NM_SETTING_VXLAN_GET_PRIVATE(setting);
+ int addr_family = AF_UNSPEC;
+ gboolean remote_is_valid = TRUE;
+ gboolean local_is_valid = TRUE;
+
+ if (priv->remote && !nm_utils_parse_inaddr_bin(addr_family, priv->remote, &addr_family, NULL))
+ remote_is_valid = FALSE;
+ if (priv->local && !nm_utils_parse_inaddr_bin(addr_family, priv->local, &addr_family, NULL))
+ local_is_valid = FALSE;
- if (nm_utils_ipaddr_is_valid(AF_INET, priv->remote))
- family = AF_INET;
- else if (nm_utils_ipaddr_is_valid(AF_INET6, priv->remote))
- family = AF_INET6;
- else {
+ if (!remote_is_valid) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("'%s' is not a valid IP address"),
- priv->remote);
+ _("'%s' is not a valid IP%s address"),
+ priv->remote,
+ addr_family == AF_UNSPEC ? "" : (addr_family == AF_INET ? "4" : "6"));
g_prefix_error(error, "%s.%s: ", NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_REMOTE);
return FALSE;
}
- if (priv->local) {
- if (!nm_utils_ipaddr_is_valid(family, priv->local)) {
- g_set_error(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("'%s' is not a valid IP%c address"),
- priv->local,
- family == AF_INET ? '4' : '6');
- g_prefix_error(error, "%s.%s: ", NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_LOCAL);
- return FALSE;
- }
+ if (!local_is_valid) {
+ g_set_error(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("'%s' is not a valid IP%s address"),
+ priv->local,
+ addr_family == AF_UNSPEC ? "" : (addr_family == AF_INET ? "4" : "6"));
+ g_prefix_error(error, "%s.%s: ", NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_LOCAL);
+ return FALSE;
}
if (priv->parent && !nm_utils_ifname_valid_kernel(priv->parent, NULL)
@@ -383,6 +376,19 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
/*****************************************************************************/
static void
+_addrstr_set(char **dst, const char *src)
+{
+ gs_free char *old = NULL;
+
+ old = *dst;
+ if (!src)
+ *dst = NULL;
+ else if (!nm_utils_parse_inaddr(AF_UNSPEC, src, dst))
+ *dst = g_strdup(src);
+}
+/*****************************************************************************/
+
+static void
get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
NMSettingVxlan * setting = NM_SETTING_VXLAN(object);
@@ -458,12 +464,10 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
priv->id = g_value_get_uint(value);
break;
case PROP_LOCAL:
- g_free(priv->local);
- priv->local = g_value_dup_string(value);
+ _addrstr_set(&priv->local, g_value_get_string(value));
break;
case PROP_REMOTE:
- g_free(priv->remote);
- priv->remote = g_value_dup_string(value);
+ _addrstr_set(&priv->remote, g_value_get_string(value));
break;
case PROP_SOURCE_PORT_MIN:
priv->source_port_min = g_value_get_uint(value);
@@ -531,7 +535,7 @@ nm_setting_vxlan_init(NMSettingVxlan *self)
NMSetting *
nm_setting_vxlan_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_VXLAN, NULL);
+ return g_object_new(NM_TYPE_SETTING_VXLAN, NULL);
}
static void
diff --git a/libnm-core/nm-setting-wimax.c b/libnm-core/nm-setting-wimax.c
index e148a435a1..6ce9248f60 100644
--- a/libnm-core/nm-setting-wimax.c
+++ b/libnm-core/nm-setting-wimax.c
@@ -183,7 +183,7 @@ nm_setting_wimax_init(NMSettingWimax *setting)
NMSetting *
nm_setting_wimax_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_WIMAX, NULL);
+ return g_object_new(NM_TYPE_SETTING_WIMAX, NULL);
}
static void
diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c
index df922e9e14..10385d002d 100644
--- a/libnm-core/nm-setting-wired.c
+++ b/libnm-core/nm-setting-wired.c
@@ -1174,7 +1174,7 @@ nm_setting_wired_init(NMSettingWired *setting)
NMSetting *
nm_setting_wired_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_WIRED, NULL);
+ return g_object_new(NM_TYPE_SETTING_WIRED, NULL);
}
static void
diff --git a/libnm-core/nm-setting-wireless-security.c b/libnm-core/nm-setting-wireless-security.c
index 13e7a81899..a1db64a24c 100644
--- a/libnm-core/nm-setting-wireless-security.c
+++ b/libnm-core/nm-setting-wireless-security.c
@@ -1445,7 +1445,7 @@ nm_setting_wireless_security_init(NMSettingWirelessSecurity *self)
NMSetting *
nm_setting_wireless_security_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_WIRELESS_SECURITY, NULL);
+ return g_object_new(NM_TYPE_SETTING_WIRELESS_SECURITY, NULL);
}
static void
diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c
index 4dd85b45d9..2f7dfacffc 100644
--- a/libnm-core/nm-setting-wireless.c
+++ b/libnm-core/nm-setting-wireless.c
@@ -1326,7 +1326,7 @@ nm_setting_wireless_init(NMSettingWireless *setting)
NMSetting *
nm_setting_wireless_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_WIRELESS, NULL);
+ return g_object_new(NM_TYPE_SETTING_WIRELESS, NULL);
}
static void
diff --git a/libnm-core/nm-setting-wpan.c b/libnm-core/nm-setting-wpan.c
index f9868f5917..955bb43408 100644
--- a/libnm-core/nm-setting-wpan.c
+++ b/libnm-core/nm-setting-wpan.c
@@ -281,7 +281,7 @@ nm_setting_wpan_init(NMSettingWpan *setting)
NMSetting *
nm_setting_wpan_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_WPAN, NULL);
+ return g_object_new(NM_TYPE_SETTING_WPAN, NULL);
}
static void
diff --git a/libnm-core/nm-setting.c b/libnm-core/nm-setting.c
index 0f62128908..e3dd45f1cb 100644
--- a/libnm-core/nm-setting.c
+++ b/libnm-core/nm-setting.c
@@ -57,26 +57,6 @@ static GenData *_gendata_hash(NMSetting *setting, gboolean create_if_necessary);
/*****************************************************************************/
-static NMSettingPriority
-_get_base_type_priority(const NMMetaSettingInfo *setting_info, GType gtype)
-{
- /* Historical oddity: PPPoE is a base-type even though it's not
- * priority 1. It needs to be sorted *after* lower-level stuff like
- * Wi-Fi security or 802.1x for secrets, but it's still allowed as a
- * base type.
- */
-
- if (setting_info) {
- if (NM_IN_SET(setting_info->setting_priority,
- NM_SETTING_PRIORITY_HW_BASE,
- NM_SETTING_PRIORITY_HW_NON_BASE)
- || gtype == NM_TYPE_SETTING_PPPOE)
- return setting_info->setting_priority;
- }
-
- return NM_SETTING_PRIORITY_INVALID;
-}
-
NMSettingPriority
_nm_setting_get_setting_priority(NMSetting *setting)
{
@@ -89,18 +69,12 @@ _nm_setting_get_setting_priority(NMSetting *setting)
}
NMSettingPriority
-_nm_setting_type_get_base_type_priority(GType type)
-{
- return _get_base_type_priority(nm_meta_setting_infos_by_gtype(type), type);
-}
-
-NMSettingPriority
_nm_setting_get_base_type_priority(NMSetting *setting)
{
g_return_val_if_fail(NM_IS_SETTING(setting), NM_SETTING_PRIORITY_INVALID);
- return _get_base_type_priority(NM_SETTING_GET_CLASS(setting)->setting_info,
- G_OBJECT_TYPE(setting));
+ return nm_meta_setting_info_get_base_type_priority(NM_SETTING_GET_CLASS(setting)->setting_info,
+ G_OBJECT_TYPE(setting));
}
/**
@@ -797,7 +771,7 @@ _nm_setting_new_from_dbus(GType setting_type,
* either be ignored or else has a backward-compatibility equivalent
* that we do know about.
*/
- setting = (NMSetting *) g_object_new(setting_type, NULL);
+ setting = g_object_new(setting_type, NULL);
if (NM_FLAGS_HAS(parse_flags, NM_SETTING_PARSE_FLAGS_STRICT)) {
GVariantIter iter;
@@ -1481,10 +1455,10 @@ _nm_setting_compare(NMConnection * con_a,
GenData *a_gendata = _gendata_hash(a, FALSE);
GenData *b_gendata = _gendata_hash(b, FALSE);
- return nm_utils_hash_table_equal(a_gendata ? a_gendata->hash : NULL,
- b_gendata ? b_gendata->hash : NULL,
- TRUE,
- g_variant_equal);
+ return nm_utils_hashtable_equal(a_gendata ? a_gendata->hash : NULL,
+ b_gendata ? b_gendata->hash : NULL,
+ TRUE,
+ g_variant_equal);
}
for (i = 0; i < sett_info->property_infos_len; i++) {
diff --git a/libnm-core/nm-simple-connection.c b/libnm-core/nm-simple-connection.c
index 41ba018fd1..68149a9574 100644
--- a/libnm-core/nm-simple-connection.c
+++ b/libnm-core/nm-simple-connection.c
@@ -44,7 +44,7 @@ nm_simple_connection_init(NMSimpleConnection *self)
NMConnection *
nm_simple_connection_new(void)
{
- return (NMConnection *) g_object_new(NM_TYPE_SIMPLE_CONNECTION, NULL);
+ return g_object_new(NM_TYPE_SIMPLE_CONNECTION, NULL);
}
/**
diff --git a/libnm-core/nm-team-utils.c b/libnm-core/nm-team-utils.c
index 2f1fba33be..d0485fd906 100644
--- a/libnm-core/nm-team-utils.c
+++ b/libnm-core/nm-team-utils.c
@@ -524,10 +524,10 @@ _team_attr_data_cmp(const TeamAttrData *attr_data,
v_ptrarray_a = *((const GPtrArray *const *) val_a);
v_ptrarray_b = *((const GPtrArray *const *) val_b);
NM_CMP_RETURN(
- _nm_utils_strv_cmp_n(v_ptrarray_a ? (const char *const *) v_ptrarray_a->pdata : NULL,
- v_ptrarray_a ? v_ptrarray_a->len : 0u,
- v_ptrarray_b ? (const char *const *) v_ptrarray_b->pdata : NULL,
- v_ptrarray_b ? v_ptrarray_b->len : 0u));
+ nm_utils_strv_cmp_n(v_ptrarray_a ? (const char *const *) v_ptrarray_a->pdata : NULL,
+ v_ptrarray_a ? v_ptrarray_a->len : 0u,
+ v_ptrarray_b ? (const char *const *) v_ptrarray_b->pdata : NULL,
+ v_ptrarray_b ? v_ptrarray_b->len : 0u));
} else
nm_assert_not_reached();
return 0;
@@ -1136,13 +1136,12 @@ _team_setting_value_master_runner_tx_hash_set_list(NMTeamSetting * self,
gboolean changed;
guint i;
- if (_nm_utils_strv_cmp_n(self->d.master.runner_tx_hash
- ? (const char *const *) self->d.master.runner_tx_hash->pdata
- : NULL,
- self->d.master.runner_tx_hash ? self->d.master.runner_tx_hash->len
- : 0u,
- arr,
- len)
+ if (nm_utils_strv_cmp_n(self->d.master.runner_tx_hash
+ ? (const char *const *) self->d.master.runner_tx_hash->pdata
+ : NULL,
+ self->d.master.runner_tx_hash ? self->d.master.runner_tx_hash->len : 0u,
+ arr,
+ len)
== 0) {
changed = FALSE;
goto out;
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index fa65c8a39f..7834462f50 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -858,7 +858,7 @@ GPtrArray *
_nm_utils_copy_array(const GPtrArray *array, NMUtilsCopyFunc copy_func, GDestroyNotify free_func)
{
GPtrArray *copy;
- int i;
+ guint i;
if (!array)
return g_ptr_array_new_with_free_func(free_func);
@@ -1276,7 +1276,8 @@ nm_utils_security_valid(NMUtilsSecurityType type,
gboolean
nm_utils_wep_key_valid(const char *key, NMWepKeyType wep_type)
{
- int keylen, i;
+ gsize keylen;
+ gsize i;
if (!key)
return FALSE;
@@ -1321,7 +1322,8 @@ nm_utils_wep_key_valid(const char *key, NMWepKeyType wep_type)
gboolean
nm_utils_wpa_psk_valid(const char *psk)
{
- int psklen, i;
+ gsize psklen;
+ gsize i;
if (!psk)
return FALSE;
@@ -1354,7 +1356,7 @@ GVariant *
nm_utils_ip4_dns_to_variant(char **dns)
{
GVariantBuilder builder;
- int i;
+ gsize i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("au"));
@@ -1385,13 +1387,12 @@ nm_utils_ip4_dns_from_variant(GVariant *value)
const guint32 *array;
gsize length;
char ** dns;
- int i;
+ gsize i;
g_return_val_if_fail(g_variant_is_of_type(value, G_VARIANT_TYPE("au")), NULL);
array = g_variant_get_fixed_array(value, &length, sizeof(guint32));
- dns = g_new(char *, length + 1);
-
+ dns = g_new(char *, length + 1u);
for (i = 0; i < length; i++)
dns[i] = nm_utils_inet4_ntop_dup(array[i]);
dns[i] = NULL;
@@ -1416,7 +1417,7 @@ GVariant *
nm_utils_ip4_addresses_to_variant(GPtrArray *addresses, const char *gateway)
{
GVariantBuilder builder;
- int i;
+ guint i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("aau"));
@@ -1424,16 +1425,23 @@ nm_utils_ip4_addresses_to_variant(GPtrArray *addresses, const char *gateway)
for (i = 0; i < addresses->len; i++) {
NMIPAddress *addr = addresses->pdata[i];
guint32 array[3];
+ in_addr_t gw;
if (nm_ip_address_get_family(addr) != AF_INET)
continue;
+ gw = 0u;
+ if (gateway) {
+ in_addr_t a;
+
+ if (inet_pton(AF_INET, gateway, &a) == 1)
+ gw = a;
+ gateway = NULL;
+ }
+
nm_ip_address_get_address_binary(addr, &array[0]);
array[1] = nm_ip_address_get_prefix(addr);
- if (i == 0 && gateway)
- inet_pton(AF_INET, gateway, &array[2]);
- else
- array[2] = 0;
+ array[2] = gw;
g_variant_builder_add(
&builder,
@@ -1519,7 +1527,7 @@ GVariant *
nm_utils_ip4_routes_to_variant(GPtrArray *routes)
{
GVariantBuilder builder;
- int i;
+ guint i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("aau"));
@@ -1655,28 +1663,26 @@ nm_utils_ip4_get_default_prefix(guint32 ip)
* Utility function to convert an array of IP address strings int a #GVariant of
* type 'aay' representing an array of IPv6 addresses.
*
+ * If a string cannot be parsed, it will be silently ignored.
+ *
* Returns: (transfer none): a new floating #GVariant representing @dns.
**/
GVariant *
nm_utils_ip6_dns_to_variant(char **dns)
{
GVariantBuilder builder;
- int i;
+ gsize i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("aay"));
-
if (dns) {
for (i = 0; dns[i]; i++) {
struct in6_addr ip;
- inet_pton(AF_INET6, dns[i], &ip);
- g_variant_builder_add(
- &builder,
- "@ay",
- g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &ip, sizeof(ip), 1));
+ if (inet_pton(AF_INET6, dns[i], &ip) != 1)
+ continue;
+ g_variant_builder_add(&builder, "@ay", nm_g_variant_new_ay_in6addr(&ip));
}
}
-
return g_variant_builder_end(&builder);
}
@@ -1697,7 +1703,7 @@ nm_utils_ip6_dns_from_variant(GVariant *value)
GVariantIter iter;
GVariant * ip_var;
char ** dns;
- int i;
+ gsize i;
g_return_val_if_fail(g_variant_is_of_type(value, G_VARIANT_TYPE("aay")), NULL);
@@ -1737,32 +1743,34 @@ GVariant *
nm_utils_ip6_addresses_to_variant(GPtrArray *addresses, const char *gateway)
{
GVariantBuilder builder;
- int i;
+ guint i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("a(ayuay)"));
if (addresses) {
for (i = 0; i < addresses->len; i++) {
- NMIPAddress * addr = addresses->pdata[i];
- struct in6_addr ip_bytes, gateway_bytes;
- GVariant * ip_var, *gateway_var;
- guint32 prefix;
+ NMIPAddress * addr = addresses->pdata[i];
+ struct in6_addr address_bin;
+ struct in6_addr gateway_bin_data;
+ const struct in6_addr *gateway_bin;
if (nm_ip_address_get_family(addr) != AF_INET6)
continue;
- nm_ip_address_get_address_binary(addr, &ip_bytes);
- ip_var = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &ip_bytes, 16, 1);
-
- prefix = nm_ip_address_get_prefix(addr);
+ nm_ip_address_get_address_binary(addr, &address_bin);
- if (i == 0 && gateway)
- inet_pton(AF_INET6, gateway, &gateway_bytes);
- else
- memset(&gateway_bytes, 0, sizeof(gateway_bytes));
- gateway_var = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &gateway_bytes, 16, 1);
+ gateway_bin = &in6addr_any;
+ if (gateway) {
+ if (inet_pton(AF_INET6, gateway, &gateway_bin_data) == 1)
+ gateway_bin = &gateway_bin_data;
+ gateway = NULL;
+ }
- g_variant_builder_add(&builder, "(@ayu@ay)", ip_var, prefix, gateway_var);
+ g_variant_builder_add(&builder,
+ "(@ayu@ay)",
+ nm_g_variant_new_ay_in6addr(&address_bin),
+ (guint32) nm_ip_address_get_prefix(addr),
+ nm_g_variant_new_ay_in6addr(gateway_bin));
}
}
@@ -1860,29 +1868,32 @@ GVariant *
nm_utils_ip6_routes_to_variant(GPtrArray *routes)
{
GVariantBuilder builder;
- int i;
+ guint i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("a(ayuayu)"));
if (routes) {
for (i = 0; i < routes->len; i++) {
NMIPRoute * route = routes->pdata[i];
- struct in6_addr dest_bytes, next_hop_bytes;
- GVariant * dest, *next_hop;
- guint32 prefix, metric;
+ struct in6_addr dest_bytes;
+ struct in6_addr next_hop_bytes;
+ guint32 metric;
if (nm_ip_route_get_family(route) != AF_INET6)
continue;
nm_ip_route_get_dest_binary(route, &dest_bytes);
- dest = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &dest_bytes, 16, 1);
- prefix = nm_ip_route_get_prefix(route);
nm_ip_route_get_next_hop_binary(route, &next_hop_bytes);
- next_hop = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &next_hop_bytes, 16, 1);
- /* The old routes format uses "0" for default, not "-1" */
- metric = MAX(0, nm_ip_route_get_metric(route));
- g_variant_builder_add(&builder, "(@ayu@ayu)", dest, prefix, next_hop, metric);
+ /* The old routes format uses "0" for default, not "-1" */
+ metric = NM_MAX(0, nm_ip_route_get_metric(route));
+
+ g_variant_builder_add(&builder,
+ "(@ayu@ayu)",
+ nm_g_variant_new_ay_in6addr(&dest_bytes),
+ (guint32) nm_ip_route_get_prefix(route),
+ nm_g_variant_new_ay_in6addr(&next_hop_bytes),
+ metric);
}
}
@@ -2088,7 +2099,7 @@ GVariant *
nm_utils_ip_routes_to_variant(GPtrArray *routes)
{
GVariantBuilder builder;
- int i;
+ guint i;
g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}"));
@@ -3147,7 +3158,7 @@ nm_utils_uuid_is_null(const NMUuid *uuid)
if (!uuid)
return TRUE;
- for (i = 0; i < G_N_ELEMENTS(uuid->uuid); i++) {
+ for (i = 0; i < (int) G_N_ELEMENTS(uuid->uuid); i++) {
if (uuid->uuid[i])
return FALSE;
}
@@ -3334,7 +3345,7 @@ static gboolean
file_has_extension(const char *filename, const char *extensions[])
{
const char *ext;
- int i;
+ gsize i;
ext = strrchr(filename, '.');
if (!ext)
@@ -3833,7 +3844,7 @@ nm_utils_wifi_is_channel_valid(guint32 channel, const char *band)
G_STATIC_ASSERT(G_N_ELEMENTS(table) > 0); \
G_STATIC_ASSERT(G_N_ELEMENTS(table) == G_N_ELEMENTS(table_freqs)); \
\
- for (i = 0; i < G_N_ELEMENTS(table); i++) { \
+ for (i = 0; i < (int) G_N_ELEMENTS(table); i++) { \
nm_assert((i == G_N_ELEMENTS(table) - 1) == (table[i].chan == 0)); \
nm_assert((i == G_N_ELEMENTS(table) - 1) == (table[i].freq == 0)); \
nm_assert(table[i].freq == table_freqs[i]); \
@@ -4942,20 +4953,7 @@ nm_utils_check_virtual_device_compatibility(GType virtual_type, GType other_type
}
}
-typedef struct {
- const char *str;
- const char *num;
-} BondMode;
-
-static const BondMode bond_mode_table[] = {
- [0] = {"balance-rr", "0"},
- [1] = {"active-backup", "1"},
- [2] = {"balance-xor", "2"},
- [3] = {"broadcast", "3"},
- [4] = {"802.3ad", "4"},
- [5] = {"balance-tlb", "5"},
- [6] = {"balance-alb", "6"},
-};
+/*****************************************************************************/
/**
* nm_utils_bond_mode_int_to_string:
@@ -4972,9 +4970,7 @@ static const BondMode bond_mode_table[] = {
const char *
nm_utils_bond_mode_int_to_string(int mode)
{
- if (mode >= 0 && mode < G_N_ELEMENTS(bond_mode_table))
- return bond_mode_table[mode].str;
- return NULL;
+ return _nm_setting_bond_mode_to_string(mode);
}
/**
@@ -4993,16 +4989,7 @@ nm_utils_bond_mode_int_to_string(int mode)
int
nm_utils_bond_mode_string_to_int(const char *mode)
{
- int i;
-
- if (!mode || !*mode)
- return -1;
-
- for (i = 0; i < G_N_ELEMENTS(bond_mode_table); i++) {
- if (NM_IN_STRSET(mode, bond_mode_table[i].str, bond_mode_table[i].num))
- return i;
- }
- return -1;
+ return _nm_setting_bond_mode_from_string(mode);
}
/*****************************************************************************/
@@ -5739,7 +5726,7 @@ NM_UTILS_FLAGS2STR_DEFINE(nm_bluetooth_capability_to_string,
NMBluetoothCapabilities,
NM_UTILS_FLAGS2STR(NM_BT_CAPABILITY_NONE, "NONE"),
NM_UTILS_FLAGS2STR(NM_BT_CAPABILITY_DUN, "DUN"),
- NM_UTILS_FLAGS2STR(NM_BT_CAPABILITY_NAP, "NAP"), )
+ NM_UTILS_FLAGS2STR(NM_BT_CAPABILITY_NAP, "NAP"), );
/*****************************************************************************/
diff --git a/libnm-core/nm-version.h b/libnm-core/nm-version.h
index 1fbcf5abbd..cea26926c2 100644
--- a/libnm-core/nm-version.h
+++ b/libnm-core/nm-version.h
@@ -257,6 +257,20 @@
#define NM_AVAILABLE_IN_1_28
#endif
+#if NM_VERSION_MIN_REQUIRED >= NM_VERSION_1_30
+ #define NM_DEPRECATED_IN_1_30 G_DEPRECATED
+ #define NM_DEPRECATED_IN_1_30_FOR(f) G_DEPRECATED_FOR(f)
+#else
+ #define NM_DEPRECATED_IN_1_30
+ #define NM_DEPRECATED_IN_1_30_FOR(f)
+#endif
+
+#if NM_VERSION_MAX_ALLOWED < NM_VERSION_1_30
+ #define NM_AVAILABLE_IN_1_30 G_UNAVAILABLE(1, 30)
+#else
+ #define NM_AVAILABLE_IN_1_30
+#endif
+
/*
* Synchronous API for calling D-Bus in libnm is deprecated. See
* https://developer.gnome.org/libnm/stable/usage.html#sync-api
diff --git a/libnm-core/nm-vpn-dbus-interface.h b/libnm-core/nm-vpn-dbus-interface.h
index fc72c4faf8..38aa794a47 100644
--- a/libnm-core/nm-vpn-dbus-interface.h
+++ b/libnm-core/nm-vpn-dbus-interface.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2004 Red Hat, Inc.
*/
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c
index 6571714476..5ab1922044 100644
--- a/libnm-core/tests/test-general.c
+++ b/libnm-core/tests/test-general.c
@@ -330,7 +330,7 @@ _do_test_nm_utils_strsplit_set_f_one(NMUtilsStrsplitSetFlags flags,
}
g_assert(words_g[words_len] == NULL);
g_assert_cmpint(NM_PTRARRAY_LEN(words_g), ==, words_len);
- g_assert(_nm_utils_strv_cmp_n(exp_words, words_len, NM_CAST_STRV_CC(words_g), -1) == 0);
+ g_assert(nm_utils_strv_cmp_n(exp_words, words_len, words_g, -1) == 0);
}
}
@@ -354,7 +354,7 @@ _do_test_nm_utils_strsplit_set_f_one(NMUtilsStrsplitSetFlags flags,
g_assert_cmpstr(exp_words[i], ==, words[i]);
g_assert(words[words_len] == NULL);
- g_assert(_nm_utils_strv_cmp_n(exp_words, words_len, words, -1) == 0);
+ g_assert(nm_utils_strv_cmp_n(exp_words, words_len, words, -1) == 0);
s1 = words[0];
g_assert(s1 >= (char *) &words[words_len + 1]);
@@ -515,7 +515,7 @@ _do_test_nm_utils_strsplit_set_simple(NMUtilsStrsplitSetFlags flags,
g_assert_cmpint(words_len, >, 0);
n_tokens = NM_PTRARRAY_LEN(tokens);
- if (_nm_utils_strv_cmp_n(exp_words, words_len, tokens, -1) != 0) {
+ if (nm_utils_strv_cmp_n(exp_words, words_len, tokens, -1) != 0) {
gsize i;
g_print(">>> split \"%s\" (flags %x) got %zu tokens (%zu expected)\n",
@@ -10058,7 +10058,7 @@ _strsplit_quoted_assert_strv(const char * topic,
g_assert(strv1);
g_assert(strv2);
- if (_nm_utils_strv_equal((char **) strv1, (char **) strv2))
+ if (nm_utils_strv_equal(strv1, strv2))
return;
for (i = 0; strv1[i]; i++) {
diff --git a/libnm/NetworkManager.h b/libnm/NetworkManager.h
index e9cfad32b6..c94f093e66 100644
--- a/libnm/NetworkManager.h
+++ b/libnm/NetworkManager.h
@@ -45,6 +45,7 @@
#include "nm-dhcp-config.h"
#include "nm-enum-types.h"
#include "nm-ip-config.h"
+#include "nm-keyfile.h"
#include "nm-object.h"
#include "nm-remote-connection.h"
#include "nm-setting-6lowpan.h"
@@ -61,6 +62,7 @@
#include "nm-setting-ethtool.h"
#include "nm-setting-generic.h"
#include "nm-setting-gsm.h"
+#include "nm-setting-hostname.h"
#include "nm-setting-infiniband.h"
#include "nm-setting-ip4-config.h"
#include "nm-setting-ip6-config.h"
@@ -86,6 +88,7 @@
#include "nm-setting-team-port.h"
#include "nm-setting-tun.h"
#include "nm-setting-user.h"
+#include "nm-setting-veth.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
#include "nm-setting-vrf.h"
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index c85fcb5c5c..c61792c749 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1755,3 +1755,32 @@ global:
nm_setting_ip_config_remove_dhcp_reject_server;
nm_setting_wireless_get_ap_isolation;
} libnm_1_26_4;
+
+libnm_1_30_0 {
+global:
+ nm_device_veth_get_type;
+ nm_keyfile_handler_data_fail_with_error;
+ nm_keyfile_handler_data_get_context;
+ nm_keyfile_handler_data_warn_get;
+ nm_keyfile_handler_flags_get_type;
+ nm_keyfile_handler_type_get_type;
+ nm_keyfile_read;
+ nm_keyfile_warn_severity_get_type;
+ nm_keyfile_write;
+ nm_setting_hostname_get_from_dhcp;
+ nm_setting_hostname_get_from_dns_lookup;
+ nm_setting_hostname_get_only_from_default;
+ nm_setting_hostname_get_priority;
+ nm_setting_hostname_get_type;
+ nm_setting_ovs_external_ids_check_key;
+ nm_setting_ovs_external_ids_check_val;
+ nm_setting_ovs_external_ids_get_data;
+ nm_setting_ovs_external_ids_get_data_keys;
+ nm_setting_ovs_external_ids_get_type;
+ nm_setting_ovs_external_ids_new;
+ nm_setting_ovs_external_ids_set_data;
+ nm_setting_veth_get_peer;
+ nm_setting_veth_get_type;
+ nm_setting_veth_new;
+ nm_utils_print;
+} libnm_1_28_0;
diff --git a/libnm/meson.build b/libnm/meson.build
index d3991ab19c..abdcc1d325 100644
--- a/libnm/meson.build
+++ b/libnm/meson.build
@@ -40,6 +40,7 @@ libnm_headers = files(
'nm-device-ppp.h',
'nm-device-team.h',
'nm-device-tun.h',
+ 'nm-device-veth.h',
'nm-device-vlan.h',
'nm-device-vrf.h',
'nm-device-vxlan.h',
@@ -106,6 +107,7 @@ libnm_sources = files(
'nm-device-ppp.c',
'nm-device-team.c',
'nm-device-tun.c',
+ 'nm-device-veth.c',
'nm-device-vlan.c',
'nm-device-vrf.c',
'nm-device-vxlan.c',
@@ -138,6 +140,7 @@ deps = [
libnmdbus_dep,
libnm_libnm_core_intern_dep,
libnm_nm_default_dep,
+ libnm_keyfile_dep,
libnm_udev_aux_dep,
libudev_dep,
]
@@ -153,6 +156,7 @@ liblibnm = static_library(
links = [
liblibnm,
libnm_core,
+ libnm_keyfile,
libnmdbus,
libnm_systemd_logging_stub,
libnm_utils_base,
@@ -200,7 +204,7 @@ if enable_introspection
libnm_gir = gnome.generate_gir(
libnm,
- sources: libnm_core_sources + libnm_core_headers + libnm_core_enum_sources + libnm_sources + libnm_headers + libnm_enum_sources + [nm_version_macro_header],
+ sources: libnm_core_sources + nm_keyfile_source + libnm_core_headers + libnm_core_enum_sources + libnm_sources + libnm_headers + libnm_enum_sources + [nm_version_macro_header],
includes: 'Gio-2.0',
nsversion: nm_gir_version,
namespace: 'NM',
diff --git a/libnm/nm-access-point.c b/libnm/nm-access-point.c
index 5e23bc52fa..bde3ddc17b 100644
--- a/libnm/nm-access-point.c
+++ b/libnm/nm-access-point.c
@@ -472,7 +472,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_accesspoint = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_ACCESS_POINT,
nm_access_point_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("Flags", PROP_FLAGS, NMAccessPoint, _priv.flags),
NML_DBUS_META_PROPERTY_INIT_U("Frequency", PROP_FREQUENCY, NMAccessPoint, _priv.frequency),
diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c
index c80e466325..2880a769bc 100644
--- a/libnm/nm-active-connection.c
+++ b/libnm/nm-active-connection.c
@@ -542,7 +542,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_connection_active = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_ACTIVE_CONNECTION,
nm_active_connection_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_O_PROP("Connection",
PROP_CONNECTION,
diff --git a/libnm/nm-autoptr.h b/libnm/nm-autoptr.h
index 93be5464b9..ca70a6ca49 100644
--- a/libnm/nm-autoptr.h
+++ b/libnm/nm-autoptr.h
@@ -53,6 +53,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceOvsPort, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDevicePpp, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceTeam, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceTun, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceVeth, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceVlan, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceVxlan, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMDeviceWifi, g_object_unref)
@@ -98,6 +99,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingTeam, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingTeamPort, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingTun, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingUser, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingVeth, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingVlan, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingVpn, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(NMSettingVxlan, g_object_unref)
diff --git a/libnm/nm-checkpoint.c b/libnm/nm-checkpoint.c
index 7439a96c1e..3ab2b3a5f8 100644
--- a/libnm/nm-checkpoint.c
+++ b/libnm/nm-checkpoint.c
@@ -128,7 +128,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_checkpoint = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_CHECKPOINT,
nm_checkpoint_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_X("Created", PROP_CREATED, NMCheckpoint, _priv.created),
NML_DBUS_META_PROPERTY_INIT_AO_PROP("Devices",
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index 1c2c2dd792..ee4c0cff17 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -482,17 +482,17 @@ _nm_client_new_error_nm_not_cached(void)
}
static void
-_nm_client_dbus_call_simple_cb(GObject *source, GAsyncResult *result, gpointer data)
+_nm_client_dbus_call_simple_cb(GObject *source, GAsyncResult *result, gpointer user_data)
{
GAsyncReadyCallback callback;
- gpointer user_data;
+ gpointer callback_user_data;
gs_unref_object GObject *context_busy_watcher = NULL;
gpointer obfuscated_self_ptr;
gpointer log_call_counter_ptr;
- nm_utils_user_data_unpack(data,
+ nm_utils_user_data_unpack(user_data,
&callback,
- &user_data,
+ &callback_user_data,
&context_busy_watcher,
&obfuscated_self_ptr,
&log_call_counter_ptr);
@@ -502,7 +502,7 @@ _nm_client_dbus_call_simple_cb(GObject *source, GAsyncResult *result, gpointer d
(guint64) GPOINTER_TO_SIZE(obfuscated_self_ptr),
GPOINTER_TO_SIZE(log_call_counter_ptr));
- callback(source, result, user_data);
+ callback(source, result, callback_user_data);
}
void
@@ -1166,7 +1166,7 @@ nml_dbus_object_iface_data_get(NMLDBusObject *dbobj,
count++;
}
} else {
- nm_c_list_for_each_entry_prev (db_iface_data, &dbobj->iface_lst_head, iface_lst) {
+ c_list_for_each_entry_prev (db_iface_data, &dbobj->iface_lst_head, iface_lst) {
if (db_iface_data->dbus_iface_is_wellknown)
break;
if (db_iface_data->iface_removed)
@@ -2694,7 +2694,7 @@ _obj_handle_dbus_changes(NMClient *self, NMLDBusObject *dbobj)
nml_dbus_object_set_obj_state(dbobj, NML_DBUS_OBJ_STATE_WITH_NMOBJ_READY, self);
} else {
GType gtype = G_TYPE_NONE;
- NMLDBusMetaInteracePrio curr_prio = NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW - 1;
+ NMLDBusMetaInteracePrio curr_prio = NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10 - 1;
c_list_for_each_entry (db_iface_data, &dbobj->iface_lst_head, iface_lst) {
nm_assert(!db_iface_data->iface_removed);
diff --git a/libnm/nm-client.h b/libnm/nm-client.h
index 86e9486e29..befd454f96 100644
--- a/libnm/nm-client.h
+++ b/libnm/nm-client.h
@@ -480,6 +480,11 @@ void nm_client_dbus_set_property(NMClient * client,
NM_AVAILABLE_IN_1_24
gboolean nm_client_dbus_set_property_finish(NMClient *client, GAsyncResult *result, GError **error);
+/*****************************************************************************/
+
+NM_AVAILABLE_IN_1_30
+void nm_utils_print(int output_mode, const char *msg);
+
G_END_DECLS
#endif /* __NM_CLIENT_H__ */
diff --git a/libnm/nm-device-6lowpan.c b/libnm/nm-device-6lowpan.c
index 4cf29c14df..d3dc6d48da 100644
--- a/libnm/nm-device-6lowpan.c
+++ b/libnm/nm-device-6lowpan.c
@@ -94,7 +94,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_lowpan = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_6LOWPAN,
nm_device_6lowpan_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
diff --git a/libnm/nm-device-adsl.c b/libnm/nm-device-adsl.c
index 1cfc8652a8..2a29b61829 100644
--- a/libnm/nm-device-adsl.c
+++ b/libnm/nm-device-adsl.c
@@ -100,7 +100,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_adsl = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_ADSL,
nm_device_adsl_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceAdsl, _priv.carrier), ), );
diff --git a/libnm/nm-device-bond.c b/libnm/nm-device-bond.c
index b37948d0db..3ea61433fc 100644
--- a/libnm/nm-device-bond.c
+++ b/libnm/nm-device-bond.c
@@ -155,7 +155,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_bond = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_BOND,
nm_device_bond_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceBond, _priv.carrier),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
diff --git a/libnm/nm-device-bridge.c b/libnm/nm-device-bridge.c
index ef889d515e..fcb071e69e 100644
--- a/libnm/nm-device-bridge.c
+++ b/libnm/nm-device-bridge.c
@@ -149,7 +149,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_bridge = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_BRIDGE,
nm_device_bridge_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceBridge, _priv.carrier),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
diff --git a/libnm/nm-device-bt.c b/libnm/nm-device-bt.c
index 960ac46936..ef6cc869f0 100644
--- a/libnm/nm-device-bt.c
+++ b/libnm/nm-device-bt.c
@@ -218,7 +218,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_bluetooth = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_BLUETOOTH,
nm_device_bt_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("BtCapabilities",
PROP_BT_CAPABILITIES,
diff --git a/libnm/nm-device-dummy.c b/libnm/nm-device-dummy.c
index c5534a0e63..90e9b466fc 100644
--- a/libnm/nm-device-dummy.c
+++ b/libnm/nm-device-dummy.c
@@ -93,7 +93,7 @@ nm_device_dummy_init(NMDeviceDummy *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_dummy = NML_DBUS_META_IFACE_INIT(
NM_DBUS_INTERFACE_DEVICE_DUMMY,
nm_device_dummy_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
diff --git a/libnm/nm-device-ethernet.c b/libnm/nm-device-ethernet.c
index f831abc499..bf4a36fee0 100644
--- a/libnm/nm-device-ethernet.c
+++ b/libnm/nm-device-ethernet.c
@@ -8,11 +8,14 @@
#include "nm-device-ethernet.h"
+#include "nm-libnm-utils.h"
#include "nm-setting-connection.h"
#include "nm-setting-wired.h"
#include "nm-setting-pppoe.h"
+#include "nm-setting-veth.h"
#include "nm-utils.h"
#include "nm-object-private.h"
+#include "nm-device-veth.h"
/*****************************************************************************/
@@ -21,26 +24,17 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_PERM_HW_ADDRESS,
PROP_CARRIER,
PROP_S390_SUBCHANNELS, );
-typedef struct {
+typedef struct _NMDeviceEthernetPrivate {
char ** s390_subchannels;
char * perm_hw_address;
guint32 speed;
bool carrier;
} NMDeviceEthernetPrivate;
-struct _NMDeviceEthernet {
- NMDevice parent;
- NMDeviceEthernetPrivate _priv;
-};
-
-struct _NMDeviceEthernetClass {
- NMDeviceClass parent;
-};
-
G_DEFINE_TYPE(NMDeviceEthernet, nm_device_ethernet, NM_TYPE_DEVICE)
#define NM_DEVICE_ETHERNET_GET_PRIVATE(self) \
- _NM_GET_PRIVATE(self, NMDeviceEthernet, NM_IS_DEVICE_ETHERNET, NMObject, NMDevice)
+ _NM_GET_PRIVATE_PTR(self, NMDeviceEthernet, NM_IS_DEVICE_ETHERNET, NMObject)
/*****************************************************************************/
@@ -181,9 +175,12 @@ connection_compatible(NMDevice *device, NMConnection *connection, GError **error
->connection_compatible(device, connection, error))
return FALSE;
- if (nm_connection_is_type(connection, NM_SETTING_PPPOE_SETTING_NAME)) {
+ if (nm_connection_is_type(connection, NM_SETTING_PPPOE_SETTING_NAME)
+ || nm_connection_is_type(connection, NM_SETTING_WIRED_SETTING_NAME)
+ || (nm_connection_is_type(connection, NM_SETTING_VETH_SETTING_NAME)
+ && NM_IS_DEVICE_VETH(device))) {
/* NOP */
- } else if (!nm_connection_is_type(connection, NM_SETTING_WIRED_SETTING_NAME)) {
+ } else {
g_set_error_literal(error,
NM_DEVICE_ERROR,
NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION,
@@ -271,7 +268,13 @@ get_setting_type(NMDevice *device)
static void
nm_device_ethernet_init(NMDeviceEthernet *device)
-{}
+{
+ NMDeviceEthernetPrivate *priv;
+
+ priv = G_TYPE_INSTANCE_GET_PRIVATE(device, NM_TYPE_DEVICE_ETHERNET, NMDeviceEthernetPrivate);
+
+ device->_priv = priv;
+}
static void
finalize(GObject *object)
@@ -309,38 +312,34 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
}
}
-/* TODO: implemented Veth. */
-const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_veth = NML_DBUS_META_IFACE_INIT(
- NM_DBUS_INTERFACE_DEVICE_VETH,
- NULL,
- NML_DBUS_META_INTERFACE_PRIO_NONE,
- NML_DBUS_META_IFACE_DBUS_PROPERTIES(NML_DBUS_META_PROPERTY_INIT_TODO("Peer", "o"), ), );
-
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_wired = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_WIRED,
nm_device_ethernet_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
- NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceEthernet, _priv.carrier),
+ NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceEthernetPrivate, carrier),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
"s",
_nm_device_notify_update_prop_hw_address),
NML_DBUS_META_PROPERTY_INIT_S("PermHwAddress",
PROP_PERM_HW_ADDRESS,
- NMDeviceEthernet,
- _priv.perm_hw_address),
+ NMDeviceEthernetPrivate,
+ perm_hw_address),
NML_DBUS_META_PROPERTY_INIT_AS("S390Subchannels",
PROP_S390_SUBCHANNELS,
- NMDeviceEthernet,
- _priv.s390_subchannels),
- NML_DBUS_META_PROPERTY_INIT_U("Speed", PROP_SPEED, NMDeviceEthernet, _priv.speed), ), );
+ NMDeviceEthernetPrivate,
+ s390_subchannels),
+ NML_DBUS_META_PROPERTY_INIT_U("Speed", PROP_SPEED, NMDeviceEthernetPrivate, speed), ),
+ .base_struct_offset = G_STRUCT_OFFSET(NMDeviceEthernet, _priv), );
static void
-nm_device_ethernet_class_init(NMDeviceEthernetClass *eth_class)
+nm_device_ethernet_class_init(NMDeviceEthernetClass *klass)
{
- GObjectClass * object_class = G_OBJECT_CLASS(eth_class);
- NMDeviceClass *device_class = NM_DEVICE_CLASS(eth_class);
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMDeviceClass *device_class = NM_DEVICE_CLASS(klass);
+
+ g_type_class_add_private(klass, sizeof(NMDeviceEthernetPrivate));
object_class->get_property = get_property;
object_class->finalize = finalize;
diff --git a/libnm/nm-device-generic.c b/libnm/nm-device-generic.c
index 9e2f543cea..f27fa2b7f9 100644
--- a/libnm/nm-device-generic.c
+++ b/libnm/nm-device-generic.c
@@ -133,7 +133,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_generic = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_GENERIC,
nm_device_generic_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
diff --git a/libnm/nm-device-infiniband.c b/libnm/nm-device-infiniband.c
index bac15af767..f254ecef87 100644
--- a/libnm/nm-device-infiniband.c
+++ b/libnm/nm-device-infiniband.c
@@ -143,7 +143,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_infiniband = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_INFINIBAND,
nm_device_infiniband_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceInfiniband, _priv.carrier),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
diff --git a/libnm/nm-device-ip-tunnel.c b/libnm/nm-device-ip-tunnel.c
index 84a1cdcddf..acd8771f16 100644
--- a/libnm/nm-device-ip-tunnel.c
+++ b/libnm/nm-device-ip-tunnel.c
@@ -346,7 +346,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_iptunnel = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_IP_TUNNEL,
nm_device_ip_tunnel_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_Y("EncapsulationLimit",
PROP_ENCAPSULATION_LIMIT,
diff --git a/libnm/nm-device-macsec.c b/libnm/nm-device-macsec.c
index 78b6863029..11cbd71bff 100644
--- a/libnm/nm-device-macsec.c
+++ b/libnm/nm-device-macsec.c
@@ -387,7 +387,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_macsec = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_MACSEC,
nm_device_macsec_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_T("CipherSuite",
PROP_CIPHER_SUITE,
diff --git a/libnm/nm-device-macvlan.c b/libnm/nm-device-macvlan.c
index ad5f8b953d..bdfdfcf889 100644
--- a/libnm/nm-device-macvlan.c
+++ b/libnm/nm-device-macvlan.c
@@ -210,7 +210,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_macvlan = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_MACVLAN,
nm_device_macvlan_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_S("Mode", PROP_MODE, NMDeviceMacvlan, _priv.mode),
NML_DBUS_META_PROPERTY_INIT_B("NoPromisc",
diff --git a/libnm/nm-device-modem.c b/libnm/nm-device-modem.c
index a4493dfe4f..3d04094ec4 100644
--- a/libnm/nm-device-modem.c
+++ b/libnm/nm-device-modem.c
@@ -262,7 +262,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_modem = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_MODEM,
nm_device_modem_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_S("Apn", PROP_APN, NMDeviceModem, _priv.apn),
NML_DBUS_META_PROPERTY_INIT_U("CurrentCapabilities",
diff --git a/libnm/nm-device-olpc-mesh.c b/libnm/nm-device-olpc-mesh.c
index a9bc85a6e8..af821b5572 100644
--- a/libnm/nm-device-olpc-mesh.c
+++ b/libnm/nm-device-olpc-mesh.c
@@ -139,7 +139,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_olpcmesh = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_OLPC_MESH,
nm_device_olpc_mesh_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("ActiveChannel",
PROP_ACTIVE_CHANNEL,
diff --git a/libnm/nm-device-ovs-bridge.c b/libnm/nm-device-ovs-bridge.c
index faad9b70e4..2b7b28c4bd 100644
--- a/libnm/nm-device-ovs-bridge.c
+++ b/libnm/nm-device-ovs-bridge.c
@@ -126,7 +126,7 @@ nm_device_ovs_bridge_init(NMDeviceOvsBridge *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_ovsbridge =
NML_DBUS_META_IFACE_INIT_PROP(NM_DBUS_INTERFACE_DEVICE_OVS_BRIDGE,
nm_device_ovs_bridge_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_AO_PROP("Slaves",
PROP_SLAVES,
diff --git a/libnm/nm-device-ovs-interface.c b/libnm/nm-device-ovs-interface.c
index 7ed55c798e..b3b1deed27 100644
--- a/libnm/nm-device-ovs-interface.c
+++ b/libnm/nm-device-ovs-interface.c
@@ -76,7 +76,7 @@ nm_device_ovs_interface_init(NMDeviceOvsInterface *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_ovsinterface =
NML_DBUS_META_IFACE_INIT(NM_DBUS_INTERFACE_DEVICE_OVS_INTERFACE,
nm_device_ovs_interface_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH, );
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30, );
static void
nm_device_ovs_interface_class_init(NMDeviceOvsInterfaceClass *ovs_interface_class)
diff --git a/libnm/nm-device-ovs-port.c b/libnm/nm-device-ovs-port.c
index e96337dba6..18c4fe9b13 100644
--- a/libnm/nm-device-ovs-port.c
+++ b/libnm/nm-device-ovs-port.c
@@ -126,7 +126,7 @@ nm_device_ovs_port_init(NMDeviceOvsPort *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_ovsport =
NML_DBUS_META_IFACE_INIT_PROP(NM_DBUS_INTERFACE_DEVICE_OVS_PORT,
nm_device_ovs_port_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_AO_PROP("Slaves",
PROP_SLAVES,
diff --git a/libnm/nm-device-ppp.c b/libnm/nm-device-ppp.c
index fff2f7af98..da29a7120b 100644
--- a/libnm/nm-device-ppp.c
+++ b/libnm/nm-device-ppp.c
@@ -30,7 +30,7 @@ nm_device_ppp_init(NMDevicePpp *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_ppp =
NML_DBUS_META_IFACE_INIT(NM_DBUS_INTERFACE_DEVICE_PPP,
nm_device_ppp_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH, );
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30, );
static void
nm_device_ppp_class_init(NMDevicePppClass *klass)
diff --git a/libnm/nm-device-team.c b/libnm/nm-device-team.c
index 9a1e9f1f7e..25f28d17bf 100644
--- a/libnm/nm-device-team.c
+++ b/libnm/nm-device-team.c
@@ -177,7 +177,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_team = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_TEAM,
nm_device_team_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceTeam, _priv.carrier),
NML_DBUS_META_PROPERTY_INIT_S("Config", PROP_CONFIG, NMDeviceTeam, _priv.config),
diff --git a/libnm/nm-device-tun.c b/libnm/nm-device-tun.c
index 35f939efb0..a14a875c05 100644
--- a/libnm/nm-device-tun.c
+++ b/libnm/nm-device-tun.c
@@ -275,7 +275,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_tun = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_TUN,
nm_device_tun_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_X("Group", PROP_GROUP, NMDeviceTun, _priv.group),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
diff --git a/libnm/nm-device-veth.c b/libnm/nm-device-veth.c
new file mode 100644
index 0000000000..9f00cd8a6e
--- /dev/null
+++ b/libnm/nm-device-veth.c
@@ -0,0 +1,124 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include "nm-device-veth.h"
+
+#include "nm-setting-connection.h"
+#include "nm-setting-veth.h"
+#include "nm-setting-wired.h"
+#include "nm-utils.h"
+#include "nm-device-ethernet.h"
+#include "nm-object-private.h"
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_PEER, );
+
+typedef struct {
+ NMLDBusPropertyO peer;
+} NMDeviceVethPrivate;
+
+struct _NMDeviceVeth {
+ NMDeviceEthernet parent;
+ NMDeviceVethPrivate _priv;
+};
+
+struct _NMDeviceVethClass {
+ NMDeviceEthernetClass parent;
+};
+
+G_DEFINE_TYPE(NMDeviceVeth, nm_device_veth, NM_TYPE_DEVICE_ETHERNET)
+
+#define NM_DEVICE_VETH_GET_PRIVATE(self) \
+ _NM_GET_PRIVATE(self, NMDeviceVeth, NM_IS_DEVICE_VETH, NMObject, NMDevice)
+
+/*****************************************************************************/
+
+/**
+ * nm_device_veth_get_peer:
+ * @device: a #NMDeviceVeth
+ *
+ * Returns: (transfer none): the device's peer device
+ *
+ * Since: 1.30
+ **/
+NMDevice *
+nm_device_veth_get_peer(NMDeviceVeth *device)
+{
+ g_return_val_if_fail(NM_IS_DEVICE_VETH(device), FALSE);
+
+ return nml_dbus_property_o_get_obj(&NM_DEVICE_VETH_GET_PRIVATE(device)->peer);
+}
+
+static GType
+get_setting_type(NMDevice *device)
+{
+ return NM_TYPE_SETTING_VETH;
+}
+
+/*****************************************************************************/
+
+static void
+get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ NMDeviceVeth *device = NM_DEVICE_VETH(object);
+
+ switch (prop_id) {
+ case PROP_PEER:
+ g_value_set_object(value, nm_device_veth_get_peer(device));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+nm_device_veth_init(NMDeviceVeth *device)
+{}
+
+const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_veth =
+ NML_DBUS_META_IFACE_INIT_PROP(NM_DBUS_INTERFACE_DEVICE_VETH,
+ nm_device_veth_get_type,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_20,
+ NML_DBUS_META_IFACE_DBUS_PROPERTIES(
+ NML_DBUS_META_PROPERTY_INIT_O_PROP("Peer",
+ PROP_PEER,
+ NMDeviceVeth,
+ _priv.peer,
+ nm_device_get_type), ), );
+
+static void
+nm_device_veth_class_init(NMDeviceVethClass *klass)
+{
+ GObjectClass * object_class = G_OBJECT_CLASS(klass);
+ NMObjectClass *nm_object_class = NM_OBJECT_CLASS(klass);
+ NMDeviceClass *device_class = NM_DEVICE_CLASS(klass);
+
+ object_class->get_property = get_property;
+
+ _NM_OBJECT_CLASS_INIT_PRIV_PTR_DIRECT(nm_object_class, NMDeviceVeth);
+
+ _NM_OBJECT_CLASS_INIT_PROPERTY_O_FIELDS_1(nm_object_class, NMDeviceVethPrivate, peer);
+
+ device_class->get_setting_type = get_setting_type;
+
+ /**
+ * NMDeviceVeth:peer:
+ *
+ * The device's peer device.
+ *
+ * Since: 1.30
+ **/
+ obj_properties[PROP_PEER] = g_param_spec_object(NM_DEVICE_VETH_PEER,
+ "",
+ "",
+ NM_TYPE_DEVICE,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+ _nml_dbus_meta_class_init_with_properties(object_class, &_nml_dbus_meta_iface_nm_device_veth);
+}
diff --git a/libnm/nm-device-veth.h b/libnm/nm-device-veth.h
new file mode 100644
index 0000000000..8aef13964c
--- /dev/null
+++ b/libnm/nm-device-veth.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ */
+
+#ifndef __NM_DEVICE_VETH_H__
+#define __NM_DEVICE_VETH_H__
+
+#if !defined(__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+ #error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_VETH (nm_device_veth_get_type())
+#define NM_DEVICE_VETH(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_DEVICE_VETH, NMDeviceVeth))
+#define NM_DEVICE_VETH_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_DEVICE_VETH, NMDeviceVethClass))
+#define NM_IS_DEVICE_VETH(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_DEVICE_VETH))
+#define NM_IS_DEVICE_VETH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_DEVICE_VETH))
+#define NM_DEVICE_VETH_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_DEVICE_VETH, NMDeviceVethClass))
+
+#define NM_DEVICE_VETH_PEER "peer"
+
+/**
+ * NMDeviceVeth:
+ */
+typedef struct _NMDeviceVethClass NMDeviceVethClass;
+
+NM_AVAILABLE_IN_1_30
+GType nm_device_veth_get_type(void);
+
+NM_AVAILABLE_IN_1_30
+NMDevice *nm_device_veth_get_peer(NMDeviceVeth *device);
+
+G_END_DECLS
+
+#endif /* __NM_DEVICE_VETH_H__ */
diff --git a/libnm/nm-device-vlan.c b/libnm/nm-device-vlan.c
index 07ea02f7dc..90f879ecb6 100644
--- a/libnm/nm-device-vlan.c
+++ b/libnm/nm-device-vlan.c
@@ -188,7 +188,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_vlan = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_VLAN,
nm_device_vlan_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_B("Carrier", PROP_CARRIER, NMDeviceVlan, _priv.carrier),
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
diff --git a/libnm/nm-device-vrf.c b/libnm/nm-device-vrf.c
index 0c00c525f0..b08b0e9e25 100644
--- a/libnm/nm-device-vrf.c
+++ b/libnm/nm-device-vrf.c
@@ -108,7 +108,7 @@ nm_device_vrf_init(NMDeviceVrf *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_vrf = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_VRF,
nm_device_vrf_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("Table", PROP_TABLE, NMDeviceVrf, _priv.table), ), );
diff --git a/libnm/nm-device-vxlan.c b/libnm/nm-device-vxlan.c
index d4a0e2c0ef..63ccd729da 100644
--- a/libnm/nm-device-vxlan.c
+++ b/libnm/nm-device-vxlan.c
@@ -486,7 +486,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_vxlan = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_VXLAN,
nm_device_vxlan_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("Ageing", PROP_AGEING, NMDeviceVxlan, _priv.ageing),
NML_DBUS_META_PROPERTY_INIT_Q("DstPort", PROP_DST_PORT, NMDeviceVxlan, _priv.dst_port),
diff --git a/libnm/nm-device-wifi-p2p.c b/libnm/nm-device-wifi-p2p.c
index dcf5f3e52d..eb03126619 100644
--- a/libnm/nm-device-wifi-p2p.c
+++ b/libnm/nm-device-wifi-p2p.c
@@ -325,7 +325,7 @@ nm_device_wifi_p2p_init(NMDeviceWifiP2P *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_wifip2p = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_WIFI_P2P,
nm_device_wifi_p2p_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c
index a84492f24c..df7d26316d 100644
--- a/libnm/nm-device-wifi.c
+++ b/libnm/nm-device-wifi.c
@@ -604,7 +604,7 @@ finalize(GObject *object)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_wireless = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_WIRELESS,
nm_device_wifi_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_AO_PROP("AccessPoints",
PROP_ACCESS_POINTS,
diff --git a/libnm/nm-device-wireguard.c b/libnm/nm-device-wireguard.c
index 43febf4cb9..5427075661 100644
--- a/libnm/nm-device-wireguard.c
+++ b/libnm/nm-device-wireguard.c
@@ -131,7 +131,7 @@ finalize(GObject *object)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_wireguard = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DEVICE_WIREGUARD,
nm_device_wireguard_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("FwMark", PROP_FWMARK, NMDeviceWireGuard, _priv.fwmark),
NML_DBUS_META_PROPERTY_INIT_Q("ListenPort",
diff --git a/libnm/nm-device-wpan.c b/libnm/nm-device-wpan.c
index 83597c62e5..cfda7b0da5 100644
--- a/libnm/nm-device-wpan.c
+++ b/libnm/nm-device-wpan.c
@@ -76,7 +76,7 @@ nm_device_wpan_init(NMDeviceWpan *device)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_device_wpan = NML_DBUS_META_IFACE_INIT(
NM_DBUS_INTERFACE_DEVICE_WPAN,
nm_device_wpan_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("HwAddress",
0,
diff --git a/libnm/nm-dhcp-config.c b/libnm/nm-dhcp-config.c
index 1b8a8d154d..7f24ebd49a 100644
--- a/libnm/nm-dhcp-config.c
+++ b/libnm/nm-dhcp-config.c
@@ -102,7 +102,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_dhcp4config = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DHCP4_CONFIG,
nm_dhcp4_config_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("Options",
PROP_OPTIONS,
@@ -113,7 +113,7 @@ const NMLDBusMetaIface _nml_dbus_meta_iface_nm_dhcp4config = NML_DBUS_META_IFACE
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_dhcp6config = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_DHCP6_CONFIG,
nm_dhcp6_config_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("Options",
PROP_OPTIONS,
diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c
index 5877e2121c..0048fa1137 100644
--- a/libnm/nm-ip-config.c
+++ b/libnm/nm-ip-config.c
@@ -316,7 +316,7 @@ finalize(GObject *object)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip4config = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_IP4_CONFIG,
nm_ip4_config_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("AddressData",
PROP_ADDRESSES,
@@ -364,7 +364,7 @@ const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip4config = NML_DBUS_META_IFACE_I
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_ip6config = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_IP6_CONFIG,
nm_ip6_config_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_FCN("AddressData",
PROP_ADDRESSES,
diff --git a/libnm/nm-libnm-utils.c b/libnm/nm-libnm-utils.c
index 9c27f64de8..775aebf803 100644
--- a/libnm/nm-libnm-utils.c
+++ b/libnm/nm-libnm-utils.c
@@ -869,3 +869,42 @@ nm_utils_g_param_spec_is_default(const GParamSpec *pspec)
* strictly asserts and only support argument types that we expect. */
g_return_val_if_reached(FALSE);
}
+
+/*****************************************************************************/
+
+/**
+ * nm_utils_print:
+ * @output_mode: if 1 it uses g_print(). If 2, it uses g_printerr().
+ * If 0, it uses either g_print() or g_printerr(), depending
+ * on LIBNM_CLIENT_DEBUG (and the "stdout" flag).
+ * @msg: the message to print. The function does not append
+ * a trailing newline.
+ *
+ * The only purpose of this function is to give access to g_print()
+ * or g_printerr() from pygobject. libnm can do debug logging by
+ * setting LIBNM_CLIENT_DEBUG and uses thereby g_printerr() or
+ * g_print(). A plain "print()" function in python is not in sync
+ * with these functions (it implements additional buffering). By
+ * using nm_utils_print(), the same logging mechanisms can be used.
+ *
+ * Since: 1.30
+ */
+void
+nm_utils_print(int output_mode, const char *msg)
+{
+ gboolean use_stdout;
+
+ g_return_if_fail(msg);
+
+ if (output_mode == 0) {
+ nml_dbus_log_enabled_full(NML_DBUS_LOG_LEVEL_ANY, &use_stdout);
+ output_mode = use_stdout ? 1 : 2;
+ }
+
+ if (output_mode == 1)
+ g_print("%s", msg);
+ else if (output_mode == 2)
+ g_printerr("%s", msg);
+ else
+ g_return_if_reached();
+}
diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h
index 9582e1d8d9..86e7b304b1 100644
--- a/libnm/nm-libnm-utils.h
+++ b/libnm/nm-libnm-utils.h
@@ -7,6 +7,7 @@
#define __NM_LIBNM_UTILS_H__
#include "c-list/src/c-list.h"
+#include "nm-device.h"
#include "nm-glib-aux/nm-ref-string.h"
#include "nm-glib-aux/nm-logging-fwd.h"
#include "nm-types.h"
@@ -220,11 +221,12 @@ typedef enum {
/* See comments below for NMLDBusMetaIface.interface_prio.
*
* Higher numbers means more important to detect the GObject type. */
- NML_DBUS_META_INTERFACE_PRIO_NONE = 0,
- NML_DBUS_META_INTERFACE_PRIO_NMCLIENT = 1,
- NML_DBUS_META_INTERFACE_PRIO_PARENT_TYPE = 2,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW = 3,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH = 4,
+ NML_DBUS_META_INTERFACE_PRIO_NONE = 0,
+ NML_DBUS_META_INTERFACE_PRIO_NMCLIENT = 1,
+ NML_DBUS_META_INTERFACE_PRIO_PARENT_TYPE = 2,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10 = 3,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_20 = 4,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30 = 5,
} NMLDBusMetaInteracePrio;
/*****************************************************************************/
@@ -514,7 +516,7 @@ struct _NMLDBusMetaIface {
* NetworkManager's API does not add/remove interfaces after exporting the object the
* first time, so in practice each D-Bus object is expected to have a suitable D-Bus
* interface (and only determining interface, which doesn't change). Those interfaces have
- * priority %NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH.
+ * priority %NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30.
*
* (*) note that nothing bad would happen if a faulty NetworkManager would violate that.
* Of course, something would not work correctly, but the D-Bus interface we find is unexpected
@@ -522,7 +524,7 @@ struct _NMLDBusMetaIface {
*
* One exception is "org.freedesktop.NetworkManager.Connection.Active". This can either
* be a NMActiveConnection or a NMVpnConnection. Hence, this profile has priority
- * %NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW, and depending on whether there is
+ * %NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10, and depending on whether there is
* a "org.freedesktop.NetworkManager.VPN.Connection" (with high priority), we create
* one or the other type.
*/
@@ -816,6 +818,19 @@ struct _NMDeviceClass {
/*****************************************************************************/
+struct _NMDeviceEthernetPrivate;
+
+struct _NMDeviceEthernet {
+ NMDevice parent;
+ struct _NMDeviceEthernetPrivate *_priv;
+};
+
+struct _NMDeviceEthernetClass {
+ NMDeviceClass parent;
+};
+
+/*****************************************************************************/
+
struct _NMActiveConnectionPrivate;
struct _NMActiveConnection {
diff --git a/libnm/nm-remote-connection.c b/libnm/nm-remote-connection.c
index 63ffbf1a04..f6dbe36ae2 100644
--- a/libnm/nm-remote-connection.c
+++ b/libnm/nm-remote-connection.c
@@ -746,7 +746,7 @@ dispose(GObject *object)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_settings_connection = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
nm_remote_connection_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_S("Filename",
PROP_FILENAME,
diff --git a/libnm/nm-types.h b/libnm/nm-types.h
index 099002bd9f..3445418cde 100644
--- a/libnm/nm-types.h
+++ b/libnm/nm-types.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2014 - 2018 Red Hat, Inc.
*/
@@ -36,6 +36,7 @@ typedef struct _NMDeviceOvsPort NMDeviceOvsPort;
typedef struct _NMDevicePpp NMDevicePpp;
typedef struct _NMDeviceTeam NMDeviceTeam;
typedef struct _NMDeviceTun NMDeviceTun;
+typedef struct _NMDeviceVeth NMDeviceVeth;
typedef struct _NMDeviceVlan NMDeviceVlan;
typedef struct _NMDeviceVrf NMDeviceVrf;
typedef struct _NMDeviceVxlan NMDeviceVxlan;
diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c
index d41d674917..b308cfee1e 100644
--- a/libnm/nm-vpn-connection.c
+++ b/libnm/nm-vpn-connection.c
@@ -159,7 +159,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_vpn_connection = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_VPN_CONNECTION,
nm_vpn_connection_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_S("Banner", PROP_BANNER, NMVpnConnection, _priv.banner),
NML_DBUS_META_PROPERTY_INIT_U("VpnState",
diff --git a/libnm/nm-wifi-p2p-peer.c b/libnm/nm-wifi-p2p-peer.c
index c250342e46..7ee1f3ac4a 100644
--- a/libnm/nm-wifi-p2p-peer.c
+++ b/libnm/nm-wifi-p2p-peer.c
@@ -402,7 +402,7 @@ finalize(GObject *object)
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_wifip2ppeer = NML_DBUS_META_IFACE_INIT_PROP(
NM_DBUS_INTERFACE_WIFI_P2P_PEER,
nm_wifi_p2p_peer_get_type,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
NML_DBUS_META_IFACE_DBUS_PROPERTIES(
NML_DBUS_META_PROPERTY_INIT_U("Flags", PROP_FLAGS, NMWifiP2PPeer, _priv.flags),
NML_DBUS_META_PROPERTY_INIT_IGNORE("Groups", "as"),
diff --git a/libnm/tests/test-libnm.c b/libnm/tests/test-libnm.c
index 6f89a82334..27f0a7cc01 100644
--- a/libnm/tests/test-libnm.c
+++ b/libnm/tests/test-libnm.c
@@ -2824,8 +2824,9 @@ test_nml_dbus_meta(void)
g_assert(NM_IN_SET((NMLDBusMetaInteracePrio) mif->interface_prio,
NML_DBUS_META_INTERFACE_PRIO_NMCLIENT,
NML_DBUS_META_INTERFACE_PRIO_PARENT_TYPE,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH));
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_20,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30));
g_assert(mif->get_type_fcn);
gtype = mif->get_type_fcn();
@@ -2847,22 +2848,85 @@ test_nml_dbus_meta(void)
if (klass) {
if (NM_IS_OBJECT_CLASS(klass)) {
- NMObjectClass * nm_object_class = NM_OBJECT_CLASS(klass);
- const _NMObjectClassFieldInfo *p_prev;
- const _NMObjectClassFieldInfo *p;
-
- p_prev = NULL;
- for (p = nm_object_class->property_o_info; p; p_prev = p, p = p->parent) {
- g_assert(p->num > 0);
- g_assert(NM_IS_OBJECT_CLASS(p->klass));
- g_assert(g_type_is_a(gtype, G_TYPE_FROM_CLASS(p->klass)));
- g_assert(p->klass->property_o_info == p);
- if (p_prev) {
- g_assert(g_type_is_a(G_TYPE_FROM_CLASS(p_prev->klass),
- G_TYPE_FROM_CLASS(p->klass)));
- g_assert(p_prev->klass != p->klass);
+ NMObjectClass *nm_object_class = NM_OBJECT_CLASS(klass);
+
+ if (nm_object_class->property_o_info || nm_object_class->property_ao_info) {
+ int ii;
+
+ for (ii = 0; ii < 2; ii++) {
+ const _NMObjectClassFieldInfo *p_prev = NULL;
+ const _NMObjectClassFieldInfo *p0 = ii == 0
+ ? nm_object_class->property_o_info
+ : nm_object_class->property_ao_info;
+ const _NMObjectClassFieldInfo *p;
+
+ for (p = p0; p; p = p->parent) {
+ GType parent_gtype;
+ NMObjectClass *parent_klass;
+
+ g_assert(p->num > 0);
+ g_assert(NM_IS_OBJECT_CLASS(p->klass));
+ g_assert(g_type_is_a(gtype, G_TYPE_FROM_CLASS(p->klass)));
+ if (ii == 0)
+ g_assert(p->klass->property_o_info == p);
+ else
+ g_assert(p->klass->property_ao_info == p);
+ g_assert_cmpint(p->klass->priv_ptr_offset, >, 0);
+ if (p_prev) {
+ g_assert(g_type_is_a(G_TYPE_FROM_CLASS(p_prev->klass),
+ G_TYPE_FROM_CLASS(p->klass)));
+ g_assert(p_prev->klass != p->klass);
+ g_assert_cmpint(p_prev->klass->priv_ptr_offset,
+ >,
+ p->klass->priv_ptr_offset);
+ g_assert_cmpint(p->klass->priv_ptr_indirect, ==, TRUE);
+ }
+
+ parent_gtype = g_type_parent(G_TYPE_FROM_CLASS(p->klass));
+ g_assert(g_type_is_a(parent_gtype, NM_TYPE_OBJECT));
+ parent_klass = g_type_class_peek(parent_gtype);
+ g_assert(NM_IS_OBJECT_CLASS(parent_klass));
+ if (parent_gtype == NM_TYPE_OBJECT) {
+ g_assert_cmpint(parent_klass->priv_ptr_offset, ==, 0);
+ g_assert_cmpint(parent_klass->priv_ptr_indirect, ==, FALSE);
+ g_assert(!p->parent);
+ } else {
+ if (parent_klass->priv_ptr_offset == 0) {
+ g_assert(!parent_klass->property_o_info);
+ g_assert(!parent_klass->property_ao_info);
+ g_assert_cmpint(parent_klass->priv_ptr_indirect, ==, FALSE);
+ g_assert(!p->parent);
+ } else if (p->klass->priv_ptr_offset
+ == parent_klass->priv_ptr_offset) {
+ g_assert(p->klass->property_o_info
+ == parent_klass->property_o_info);
+ g_assert(p->klass->property_ao_info
+ == parent_klass->property_ao_info);
+ g_assert(p->klass->priv_ptr_indirect
+ == parent_klass->priv_ptr_indirect);
+ } else {
+ g_assert_cmpint(parent_klass->priv_ptr_offset, >, 0);
+ g_assert_cmpint(parent_klass->priv_ptr_offset,
+ <,
+ p->klass->priv_ptr_offset);
+ g_assert_cmpint(parent_klass->priv_ptr_indirect, ==, TRUE);
+ g_assert(p->klass->property_o_info
+ != parent_klass->property_o_info
+ || p->klass->property_ao_info
+ != parent_klass->property_ao_info);
+ }
+ }
+
+ p_prev = p;
+ }
}
+
+ g_assert_cmpint(nm_object_class->priv_ptr_offset, >, 0);
+ } else {
+ g_assert_cmpint(nm_object_class->priv_ptr_offset, ==, 0);
+ g_assert_cmpint(nm_object_class->priv_ptr_indirect, ==, FALSE);
}
+
} else
g_assert(NM_IS_CLIENT_CLASS(klass));
}
@@ -3128,172 +3192,172 @@ test_dbus_meta_types(void)
{
NM_DBUS_INTERFACE_ACCESS_POINT,
NM_TYPE_ACCESS_POINT,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_ACTIVE_CONNECTION,
NM_TYPE_ACTIVE_CONNECTION,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_LOW,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_10,
}, /* otherwise, NM_TYPE_VPN_CONNECTION. */
{
NM_DBUS_INTERFACE_DEVICE_6LOWPAN,
NM_TYPE_DEVICE_6LOWPAN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_ADSL,
NM_TYPE_DEVICE_ADSL,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_BOND,
NM_TYPE_DEVICE_BOND,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_BRIDGE,
NM_TYPE_DEVICE_BRIDGE,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_BLUETOOTH,
NM_TYPE_DEVICE_BT,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_DUMMY,
NM_TYPE_DEVICE_DUMMY,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_WIRED,
NM_TYPE_DEVICE_ETHERNET,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_GENERIC,
NM_TYPE_DEVICE_GENERIC,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_INFINIBAND,
NM_TYPE_DEVICE_INFINIBAND,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_IP_TUNNEL,
NM_TYPE_DEVICE_IP_TUNNEL,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_MACSEC,
NM_TYPE_DEVICE_MACSEC,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_MACVLAN,
NM_TYPE_DEVICE_MACVLAN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_MODEM,
NM_TYPE_DEVICE_MODEM,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_OLPC_MESH,
NM_TYPE_DEVICE_OLPC_MESH,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_OVS_INTERFACE,
NM_TYPE_DEVICE_OVS_INTERFACE,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_OVS_PORT,
NM_TYPE_DEVICE_OVS_PORT,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_OVS_BRIDGE,
NM_TYPE_DEVICE_OVS_BRIDGE,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_WIFI_P2P,
NM_TYPE_DEVICE_WIFI_P2P,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_PPP,
NM_TYPE_DEVICE_PPP,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_TEAM,
NM_TYPE_DEVICE_TEAM,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_TUN,
NM_TYPE_DEVICE_TUN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_VLAN,
NM_TYPE_DEVICE_VLAN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_WPAN,
NM_TYPE_DEVICE_WPAN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_VXLAN,
NM_TYPE_DEVICE_VXLAN,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_WIRELESS,
NM_TYPE_DEVICE_WIFI,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DEVICE_WIREGUARD,
NM_TYPE_DEVICE_WIREGUARD,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DHCP4_CONFIG,
NM_TYPE_DHCP4_CONFIG,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_DHCP6_CONFIG,
NM_TYPE_DHCP6_CONFIG,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_IP4_CONFIG,
NM_TYPE_IP4_CONFIG,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_IP6_CONFIG,
NM_TYPE_IP6_CONFIG,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_WIFI_P2P_PEER,
NM_TYPE_WIFI_P2P_PEER,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
NM_TYPE_REMOTE_CONNECTION,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_SETTINGS,
@@ -3308,12 +3372,12 @@ test_dbus_meta_types(void)
{
NM_DBUS_INTERFACE_VPN_CONNECTION,
NM_TYPE_VPN_CONNECTION,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
{
NM_DBUS_INTERFACE_CHECKPOINT,
NM_TYPE_CHECKPOINT,
- NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
+ NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
},
};
guint i;
diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml
index 6b573890f8..79f18e45e9 100644
--- a/man/NetworkManager.conf.xml
+++ b/man/NetworkManager.conf.xml
@@ -278,18 +278,24 @@ no-auto-default=*
this option. An hostname empty or equal to 'localhost', 'localhost6',
'localhost.localdomain' or 'localhost6.localdomain' is considered invalid.
</para>
- <para><literal>default</literal>: NetworkManager will update the hostname
- with the one provided via DHCP on the main connection (the one with a default
- route). If not present, the hostname will be updated to the last one set
- outside NetworkManager. If it is not valid, NetworkManager will try to recover
- the hostname from the reverse lookup of the IP address of the main connection.
- If this fails too, the hostname will be set to 'localhost.localdomain'.
+ <para><literal>default</literal>: NetworkManager will update the
+ hostname with the one provided via DHCP or reverse DNS lookup of the
+ IP address on the connection with the default route or on any
+ connection with the property hostname.only-from-default set to
+ '<literal>false</literal>'. Connections are considered in order of
+ increasing value of the <literal>hostname.priority</literal>
+ property. In case multiple connections have the same priority,
+ connections activated earlier are considered first. If no hostname can
+ be determined in such way, the hostname will be updated to the last
+ one set outside NetworkManager or to 'localhost.localdomain'.
</para>
- <para><literal>dhcp</literal>: NetworkManager will update the transient hostname
- only with information coming from DHCP. No fallback nor reverse lookup will be
- performed, but when the dhcp connection providing the hostname is deactivated,
- the hostname is reset to the last hostname set outside NetworkManager or
- 'localhost' if none valid is there.
+ <para><literal>dhcp</literal>: this is similar to
+ '<literal>default</literal>', with the difference that after trying to
+ get the DHCP hostname, reverse DNS lookup is not done. Note that
+ selecting this option is equivalent to setting the property
+ '<literal>hostname.from-dns-lookup</literal>' to
+ '<literal>false</literal>' globally for all connections in
+ NetworkManager.conf.
</para>
<para><literal>none</literal>: NetworkManager will not manage the transient
hostname and will never set it.
@@ -668,6 +674,18 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
<para>Specify default values for connections.
</para>
<para>
+ Such default values are only consulted if the corresponding per-connection property
+ explicitly allows for that. That means, all these properties correspond to
+ a property of the connection profile (for example <literal>connection.mud-url</literal>).
+ Only if the per-profile property is set to a special value that indicates to use the
+ default, the default value from NetworkManager.conf is consulted. It depends on the
+ property, which is the special value that indicates fallback to the default, but it
+ usually is something like empty, unset values or special numeric values like 0 or -1.
+ That means the effectively used value can first always be configured for each profile,
+ and these default values only matter if the per-profile values explicitly indicates
+ to use the default from <literal>NetworkManager.conf</literal>.
+ </para>
+ <para>
Example:
<programlisting>
[connection]
@@ -680,8 +698,8 @@ ipv6.ip6-privacy=0
Not all properties can be overwritten, only the following
properties are supported to have their default values configured
(see <link linkend='nm-settings'><citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry></link> for details).
- A default value is only consulted if the corresponding per-connection value
- explicitly allows for that.
+ </para>
+ <para>
<!-- The following comment is used by check-config-options.sh, don't remove it. -->
<!-- start connection defaults -->
<variablelist>
@@ -735,6 +753,18 @@ ipv6.ip6-privacy=0
<term><varname>gsm.mtu</varname></term>
</varlistentry>
<varlistentry>
+ <term><varname>hostname.from-dhcp</varname></term>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>hostname.from-dns-lookup</varname></term>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>hostname.only-from-default</varname></term>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>hostname.priority</varname></term>
+ </varlistentry>
+ <varlistentry>
<term><varname>infiniband.mtu</varname></term>
<listitem><para>If configured explicitly to 0, the MTU is not reconfigured during device activation unless it is required due to IPv6 constraints. If left unspecified, a DHCP/IPv6 SLAAC provided value is used or the MTU is left unspecified on activation.</para></listitem>
</varlistentry>
@@ -1072,8 +1102,25 @@ managed=1
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>wifi.iwd.autoconnect</varname></term>
+ <listitem>
+ <para>
+ If <literal>wifi.backend</literal> is <literal>iwd</literal>, setting this to
+ <literal>false</literal> forces IWD's autoconnect mechanism to be disabled for
+ this device and connections will only be initiated by NetworkManager whether
+ commaned by a client or automatically. Leaving it <literal>true</literal> (default)
+ stops NetworkManager from automatically initiating connections and allows
+ IWD to use its network ranking and scanning logic to decide the best networks
+ to autoconnect to next. Connections' <literal>autoconnect-priority</literal>,
+ <literal>autoconnect-retries</literal> settings will be ignored. Other settings
+ like <literal>permissions</literal> or <literal>multi-connect</literal> may interfere
+ with IWD connection attempts.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry id="sriov-num-vfs">
- , <term><varname>sriov-num-vfs</varname></term>
+ <term><varname>sriov-num-vfs</varname></term>
<listitem>
<para>
Specify the number of virtual functions (VF) to enable
diff --git a/man/nmcli.xml b/man/nmcli.xml
index e1b2d81b33..b0665efd69 100644
--- a/man/nmcli.xml
+++ b/man/nmcli.xml
@@ -946,30 +946,71 @@
<option>connection.type</option> property (or use the <option>type</option> alias)
to one of known NetworkManager connection types:</para>
+ <!--
+ See also: nm_meta_setting_info_get_base_type_priority().
+
+ nmcli '-'-complete-args connection add type "" |
+ sort |
+ awk '
+ /^(bond|bridge|team)-slave$/ {
+ printf " <listitem><para><literal>%s</literal> (deprecated for ethernet with master)</para></listitem>\n", $0;
+ next;
+ }
+ /^(wifi|ethernet|olpc-mash)$/ {
+ next;
+ }
+ {
+ alias = "";
+ if ($0 == "802-11-wireless") { alias = "wifi"; }
+ if ($0 == "802-3-ethernet") { alias = "ethernet"; }
+ if ($0 == "802-11-olpc-mesh") { alias = "olpc-mesh"; }
+ if (alias != "") {
+ printf " <listitem><para><literal>%s</literal> (alias <literal>%s</literal>)</para></listitem>\n", $0, alias;
+ } else {
+ printf " <listitem><para><literal>%s</literal></para></listitem>\n", $0;
+ }
+ }
+ '
+
+ -->
<itemizedlist spacing='compact'>
- <listitem><para><literal>ethernet</literal></para></listitem>
- <listitem><para><literal>wifi</literal></para></listitem>
- <listitem><para><literal>wimax</literal></para></listitem>
- <listitem><para><literal>pppoe</literal></para></listitem>
- <listitem><para><literal>gsm</literal></para></listitem>
- <listitem><para><literal>cdma</literal></para></listitem>
- <listitem><para><literal>infiniband</literal></para></listitem>
+ <listitem><para><literal>6lowpan</literal></para></listitem>
+ <listitem><para><literal>802-11-olpc-mesh</literal> (alias <literal>olpc-mesh</literal>)</para></listitem>
+ <listitem><para><literal>802-11-wireless</literal> (alias <literal>wifi</literal>)</para></listitem>
+ <listitem><para><literal>802-3-ethernet</literal> (alias <literal>ethernet</literal>)</para></listitem>
+ <listitem><para><literal>adsl</literal></para></listitem>
<listitem><para><literal>bluetooth</literal></para></listitem>
- <listitem><para><literal>vlan</literal></para></listitem>
<listitem><para><literal>bond</literal></para></listitem>
- <listitem><para><literal>bond-slave</literal></para></listitem>
- <listitem><para><literal>team</literal></para></listitem>
- <listitem><para><literal>team-slave</literal></para></listitem>
+ <listitem><para><literal>bond-slave</literal> (deprecated for ethernet with master)</para></listitem>
<listitem><para><literal>bridge</literal></para></listitem>
- <listitem><para><literal>bridge-slave</literal></para></listitem>
- <listitem><para><literal>vpn</literal></para></listitem>
- <listitem><para><literal>olpc-mesh</literal></para></listitem>
- <listitem><para><literal>adsl</literal></para></listitem>
- <listitem><para><literal>tun</literal></para></listitem>
+ <listitem><para><literal>bridge-slave</literal> (deprecated for ethernet with master)</para></listitem>
+ <listitem><para><literal>cdma</literal></para></listitem>
+ <listitem><para><literal>dummy</literal></para></listitem>
+ <listitem><para><literal>generic</literal></para></listitem>
+ <listitem><para><literal>gsm</literal></para></listitem>
+ <listitem><para><literal>infiniband</literal></para></listitem>
<listitem><para><literal>ip-tunnel</literal></para></listitem>
+ <listitem><para><literal>macsec</literal></para></listitem>
<listitem><para><literal>macvlan</literal></para></listitem>
+ <listitem><para><literal>olpc-mesh</literal></para></listitem>
+ <listitem><para><literal>ovs-bridge</literal></para></listitem>
+ <listitem><para><literal>ovs-dpdk</literal></para></listitem>
+ <listitem><para><literal>ovs-interface</literal></para></listitem>
+ <listitem><para><literal>ovs-patch</literal></para></listitem>
+ <listitem><para><literal>ovs-port</literal></para></listitem>
+ <listitem><para><literal>pppoe</literal></para></listitem>
+ <listitem><para><literal>team</literal></para></listitem>
+ <listitem><para><literal>team-slave</literal> (deprecated for ethernet with master)</para></listitem>
+ <listitem><para><literal>tun</literal></para></listitem>
+ <listitem><para><literal>veth</literal></para></listitem>
+ <listitem><para><literal>vlan</literal></para></listitem>
+ <listitem><para><literal>vpn</literal></para></listitem>
+ <listitem><para><literal>vrf</literal></para></listitem>
<listitem><para><literal>vxlan</literal></para></listitem>
- <listitem><para><literal>dummy</literal></para></listitem>
+ <listitem><para><literal>wifi-p2p</literal></para></listitem>
+ <listitem><para><literal>wimax</literal></para></listitem>
+ <listitem><para><literal>wireguard</literal></para></listitem>
+ <listitem><para><literal>wpan</literal></para></listitem>
</itemizedlist>
<para>The most typical uses are described in the <link linkend='examples' endterm='examples.title' /> section.</para>
diff --git a/meson.build b/meson.build
index 02bfb00036..13dadd4339 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project(
# - add corresponding NM_VERSION_x_y_z macros in
# "shared/nm-version-macros.h.in"
# - update number in configure.ac
- version: '1.28.0',
+ version: '1.29.5',
license: 'GPL2+',
default_options: [
'buildtype=debugoptimized',
@@ -746,6 +746,8 @@ if enable_nm_cloud_setup
assert(libcurl_dep.found(), 'nm-cloud-setup requires libcurl library. Use -Dnm_cloud_setup=false to disable it')
endif
+enable_docs = get_option('docs')
+
more_asserts = get_option('more_asserts')
if more_asserts == 'auto'
if nm_minor_version % 2 == 0
@@ -796,6 +798,12 @@ else
endif
endif
+test(
+ 'check-local-gitlab-ci',
+ find_program(join_paths(source_root, 'tools', 'check-gitlab-ci.sh')),
+ args: [source_root],
+)
+
# Tests, utilities and documentation
tests = get_option('tests')
enable_tests = (tests != 'no')
@@ -915,8 +923,6 @@ if enable_qt
subdir('examples/C/qt')
endif
-enable_docs = get_option('docs')
-
if enable_docs
assert(enable_introspection, '-Ddocs=true requires -Dintrospection=true')
assert(meson.version().version_compare('>= 0.46.0'), '-Ddocs requires meson >= 0.46')
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ea2eafa3f3..cee590c0cf 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -82,6 +82,7 @@ libnm-core/nm-setting-macvlan.c
libnm-core/nm-setting-match.c
libnm-core/nm-setting-olpc-mesh.c
libnm-core/nm-setting-ovs-bridge.c
+libnm-core/nm-setting-ovs-external-ids.c
libnm-core/nm-setting-ovs-interface.c
libnm-core/nm-setting-ovs-patch.c
libnm-core/nm-setting-ovs-port.c
@@ -94,6 +95,7 @@ libnm-core/nm-setting-team-port.c
libnm-core/nm-setting-team.c
libnm-core/nm-setting-tun.c
libnm-core/nm-setting-user.c
+libnm-core/nm-setting-veth.c
libnm-core/nm-setting-vlan.c
libnm-core/nm-setting-vrf.c
libnm-core/nm-setting-vpn.c
@@ -129,6 +131,7 @@ libnm/nm-device-ovs-interface.c
libnm/nm-device-ovs-port.c
libnm/nm-device-team.c
libnm/nm-device-tun.c
+libnm/nm-device-veth.c
libnm/nm-device-vlan.c
libnm/nm-device-vrf.c
libnm/nm-device-vxlan.c
@@ -164,6 +167,7 @@ src/devices/nm-device-infiniband.c
src/devices/nm-device-ip-tunnel.c
src/devices/nm-device-macvlan.c
src/devices/nm-device-tun.c
+src/devices/nm-device-veth.c
src/devices/nm-device-vlan.c
src/devices/nm-device-vrf.c
src/devices/nm-device-vxlan.c
diff --git a/po/da.po b/po/da.po
index 6a4232afd1..a6aceae76a 100644
--- a/po/da.po
+++ b/po/da.po
@@ -6,13 +6,13 @@
# Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2005, 06, 07.
# Lubomir Rintel <lkundrak@v3.sk>, 2016-2017. #zanata
# Thomas Haller <thaller@redhat.com>, 2017. #zanata
-# scootergrisen, 2019.
+# scootergrisen, 2019-2020.
msgid ""
msgstr ""
"Project-Id-Version: NetworkManager\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-04 09:54+0200\n"
-"PO-Revision-Date: 2019-10-18 03:56+0200\n"
+"PO-Revision-Date: 2020-10-18 21:00+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish\n"
"Language: da\n"
@@ -158,14 +158,13 @@ msgid "access denied"
msgstr "adgang nægtet"
#: ../clients/cli/common.c:1441
-#, fuzzy
msgid "NetworkManager is not running"
-msgstr "Status for NetworkManager"
+msgstr "NetworkManager kører ikke"
#: ../clients/cli/common.c:1467
-#, fuzzy, c-format
+#, c-format
msgid "Error: error connecting to system bus: %s"
-msgstr "Fejl: dårlig forbindelsestype: %s"
+msgstr "Fejl: fejl ved oprettelse af forbindelse til systembus: %s"
#: ../clients/cli/common.c:1493 ../clients/cli/connections.c:67
#: ../clients/cli/connections.c:77 ../clients/cli/devices.c:434
@@ -794,7 +793,7 @@ msgstr ""
"\n"
#: ../clients/cli/connections.c:1107
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: nmcli connection modify { ARGUMENTS | help }\n"
"\n"
@@ -837,6 +836,10 @@ msgstr ""
"'-'-tegnet gør det muligt at fjerne valgte elementer i stedet for hele "
"værdien.\n"
"\n"
+"ARGUMENTER := remove <indstilling>\n"
+"\n"
+"Fjern en indstilling fra forbindelsesprofilen.\n"
+"\n"
"Eksempler:\n"
"nmcli con mod home-wifi wifi.ssid rakosnicek\n"
"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, "
@@ -846,7 +849,7 @@ msgstr ""
"nmcli con mod em1-1 -ipv6.addr \"abbe::cafe/56\"\n"
"nmcli con mod bond0 +bond.options mii=500\n"
"nmcli con mod bond0 -bond.options downdelay\n"
-"\n"
+"nmcli con mod em1-1 remove sriov\n"
#: ../clients/cli/connections.c:1135
#, c-format
@@ -1187,14 +1190,14 @@ msgid "neither a valid connection nor device given"
msgstr "hverken en gyldig forbindelse eller enhed angivet"
#: ../clients/cli/connections.c:2761
-#, fuzzy, c-format
+#, c-format
msgid "invalid passwd-file '%s' at line %zd: %s"
-msgstr "kunne ikke læse passwd-file '%s': %s"
+msgstr "ugyldig passwd-file '%s' på linje %zd: %s"
#: ../clients/cli/connections.c:2767
-#, fuzzy, c-format
+#, c-format
msgid "invalid passwd-file '%s': %s"
-msgstr "kunne ikke læse passwd-file '%s': %s"
+msgstr "ugyldig passwd-file '%s': %s"
#: ../clients/cli/connections.c:2894 ../clients/cli/connections.c:9015
#: ../clients/cli/devices.c:1759 ../clients/cli/devices.c:1807
@@ -1202,9 +1205,9 @@ msgstr "kunne ikke læse passwd-file '%s': %s"
#: ../clients/cli/devices.c:3556 ../clients/cli/devices.c:4133
#: ../clients/cli/devices.c:4286 ../clients/cli/devices.c:4506
#: ../clients/cli/devices.c:4680
-#, fuzzy, c-format
+#, c-format
msgid "Error: invalid extra argument '%s'."
-msgstr "Fejl: Ugyldig 'wwan'-parameter: '%s'."
+msgstr "Fejl: ugyldig ekstra argument '%s'."
#: ../clients/cli/connections.c:2922
msgid "preparing"
@@ -1310,9 +1313,9 @@ msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]."
msgstr "Fejl: 'bt-type': '%s' ikke gyldig; brug [%s, %s, %s (%s), %s]."
#: ../clients/cli/connections.c:4660
-#, fuzzy, c-format
+#, c-format
msgid "Error: setting '%s' is mandatory and cannot be removed."
-msgstr "Fejl: indstillingen '%s' er obligatorisk og kan ikke fjernes.\n"
+msgstr "Fejl: indstillingen '%s' er obligatorisk og kan ikke fjernes."
#: ../clients/cli/connections.c:4670
#, c-format
@@ -1324,19 +1327,18 @@ msgid "Error: <setting>.<property> argument is missing."
msgstr "Fejl: mangler <indstilling>.<egenskab>-argument."
#: ../clients/cli/connections.c:4746
-#, fuzzy
msgid "Error: missing setting."
-msgstr "Fejl: manglende indstilling til '%s'-egenskab\n"
+msgstr "Fejl: manglende indstilling."
#: ../clients/cli/connections.c:4764
-#, fuzzy, c-format
+#, c-format
msgid "Setting '%s' is not present in the connection."
-msgstr "Indstillingen '%s' findes ikke i forbindelsen.\n"
+msgstr "Indstillingen '%s' findes ikke i forbindelsen."
#: ../clients/cli/connections.c:4768
-#, fuzzy, c-format
+#, c-format
msgid "Error: invalid setting argument '%s'."
-msgstr "Fejl: Ugyldig 'wwan'-parameter: '%s'."
+msgstr "Fejll: ugyldig indstillingsargument '%s'."
#: ../clients/cli/connections.c:4792
#, c-format
@@ -1768,7 +1770,7 @@ msgstr ""
"Viser nuværende værdi og gør det muligt at redigere den.\n"
#: ../clients/cli/connections.c:6709
-#, fuzzy, c-format
+#, c-format
msgid ""
"remove [<value>|<index>|<option name>] :: delete the value\n"
"\n"
@@ -1995,7 +1997,7 @@ msgstr "Indstillingen '%s' findes ikke i forbindelsen.\n"
#: ../clients/cli/connections.c:7701
#, c-format
msgid "Error: %s properties, nor it is a setting name.\n"
-msgstr ""
+msgstr "Fejl: %s properties, nor it is a setting name.\n"
#: ../clients/cli/connections.c:7726 ../clients/cli/connections.c:7758
#, c-format
@@ -2006,31 +2008,31 @@ msgstr ""
#: ../clients/cli/connections.c:7781
#, c-format
msgid "Error: invalid property: %s, neither a valid setting name.\n"
-msgstr ""
+msgstr "Fejl: ugyldig egenskab: %s, hverken et gyldigt indstillingsnavn.\n"
#: ../clients/cli/connections.c:7811
-#, fuzzy, c-format
+#, c-format
msgid "Error: unknown setting: '%s'\n"
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: ukendt indstilling: '%s'\n"
#: ../clients/cli/connections.c:7816
-#, fuzzy, c-format
+#, c-format
msgid "Error: '%s' setting not present in the connection\n"
-msgstr "Fejl: %s - ingen sådan forbindelse."
+msgstr "Fejl: '%s'-indstilling findes ikke i forbindelsen\n"
#: ../clients/cli/connections.c:7847
-#, fuzzy, c-format
+#, c-format
msgid "Error: invalid property: %s%s\n"
-msgstr "Fejl: Ugyldig 'wifi'-parameter: '%s'."
+msgstr "Fejl: ugyldig egenskab: %s%s\n"
#: ../clients/cli/connections.c:7849
msgid ", neither a valid setting name"
-msgstr ""
+msgstr ", hverken et gyldigt indstillingsnavn"
#: ../clients/cli/connections.c:7865
#, c-format
msgid "Invalid verify option: %s\n"
-msgstr ""
+msgstr "Ugyldigt verify-tilvalg: %s\n"
#: ../clients/cli/connections.c:7874
#, c-format
@@ -2045,37 +2047,37 @@ msgstr "Verificer forbindelse: %s\n"
#: ../clients/cli/connections.c:7893
#, c-format
msgid "The error cannot be fixed automatically.\n"
-msgstr ""
+msgstr "Fejlen kan ikke rettes automatisk.\n"
#: ../clients/cli/connections.c:7913
-#, fuzzy, c-format
+#, c-format
msgid "Error: invalid argument '%s'\n"
-msgstr "Fejl: Ugyldig 'wifi'-parameter: '%s'."
+msgstr "Fejl: ugyldigt argument '%s'\n"
#: ../clients/cli/connections.c:7963
-#, fuzzy, c-format
+#, c-format
msgid "Error: Failed to save '%s' (%s) connection: %s\n"
-msgstr "Fejl: Frakobling af enhed \"%s\" (%s) mislykkedes: %s"
+msgstr "Fejl: Kunne ikke gemme '%s' (%s) forbindelse: %s\n"
#: ../clients/cli/connections.c:7969
-#, fuzzy, c-format
+#, c-format
msgid "Error: Timeout saving '%s' (%s) connection\n"
-msgstr "Fejl: Frakobling af enhed \"%s\" (%s) mislykkedes: %s"
+msgstr "Fejl: Timeout ved gemning af '%s' (%s) forbindelse\n"
#: ../clients/cli/connections.c:7974
#, c-format
msgid "Connection '%s' (%s) successfully saved.\n"
-msgstr ""
+msgstr "Forbindelsen '%s' (%s) blev gemt.\n"
#: ../clients/cli/connections.c:7975
#, c-format
msgid "Connection '%s' (%s) successfully updated.\n"
-msgstr ""
+msgstr "Forbindelsen '%s' (%s) blev opdateret.\n"
#: ../clients/cli/connections.c:8008
-#, fuzzy, c-format
+#, c-format
msgid "Error: connection verification failed: %s\n"
-msgstr "Fejl: Forbindelsesaktivering fejlede: %s"
+msgstr "Fejl: forbindelsesverfikation mislykkedes: %s\n"
#: ../clients/cli/connections.c:8009
msgid "(unknown error)"
@@ -2084,78 +2086,79 @@ msgstr "(ukendt fejl)"
#: ../clients/cli/connections.c:8010
#, c-format
msgid "You may try running 'verify fix' to fix errors.\n"
-msgstr ""
+msgstr "Du kan prøve at køre 'verify fix' for at rette fejl.\n"
#. TRANSLATORS: do not translate 'save', leave it as it is
#: ../clients/cli/connections.c:8033
#, c-format
msgid "Error: connection is not saved. Type 'save' first.\n"
-msgstr ""
+msgstr "Fejl: forbindelsen er ikke gemt. Skriv først 'save'.\n"
#: ../clients/cli/connections.c:8037
-#, fuzzy, c-format
+#, c-format
msgid "Error: connection is not valid: %s\n"
-msgstr "Fejl: Forbindelsesaktivering fejlede: %s"
+msgstr "Fejl: forbindelsen er ikke gyldig: %s\n"
#: ../clients/cli/connections.c:8047
-#, fuzzy, c-format
+#, c-format
msgid "Error: Cannot activate connection: %s.\n"
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: Kan ikke aktivere forbindelse: %s.\n"
#: ../clients/cli/connections.c:8056
-#, fuzzy, c-format
+#, c-format
msgid "Error: Failed to activate '%s' (%s) connection: %s\n"
-msgstr "Fejl: Frakobling af enhed \"%s\" (%s) mislykkedes: %s"
+msgstr "Fejl: Kunne ikke aktivere '%s' (%s) forbindelse: %s\n"
#: ../clients/cli/connections.c:8063
msgid "Monitoring connection activation (press any key to continue)\n"
-msgstr ""
+msgstr "Overvåger forbindelsesaktivering (tryk på en tast for at fortsætte)\n"
#: ../clients/cli/connections.c:8099
-#, fuzzy, c-format
+#, c-format
msgid "Error: status-line: %s\n"
-msgstr "Fejl: 'nm status': %s"
+msgstr "Fejl: status-line: %s\n"
#: ../clients/cli/connections.c:8107
-#, fuzzy, c-format
+#, c-format
msgid "Error: save-confirmation: %s\n"
-msgstr "Fejl: 'con list': %s"
+msgstr "Fejl: save-confirmation: %s\n"
#: ../clients/cli/connections.c:8115
-#, fuzzy, c-format
+#, c-format
msgid "Error: show-secrets: %s\n"
-msgstr "Fejl: 'con status': %s"
+msgstr "Fejl: show-secrets: %s\n"
#: ../clients/cli/connections.c:8122
#, c-format
msgid "Current nmcli configuration:\n"
-msgstr ""
+msgstr "Nuværende nmcli-konfiguration:\n"
#: ../clients/cli/connections.c:8130
#, c-format
msgid "Invalid configuration option '%s'; allowed [%s]\n"
-msgstr ""
+msgstr "Ugyldigt konfigurationstilvalg '%s'; tilladt [%s]\n"
#: ../clients/cli/connections.c:8352
#, c-format
msgid "Error: only one of 'id', 'filename', uuid, or 'path' can be provided."
-msgstr ""
+msgstr "Fejl: der kan kun angives én af 'id', 'filename', uuid eller 'path'."
#: ../clients/cli/connections.c:8367 ../clients/cli/connections.c:8531
-#, fuzzy, c-format
+#, c-format
msgid "Error: Unknown connection '%s'."
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: Ukendt forbindelse '%s'."
#: ../clients/cli/connections.c:8384
#, c-format
msgid "Warning: editing existing connection '%s'; 'type' argument is ignored\n"
-msgstr ""
+msgstr "Advarsel: redigerer eksisterende forbindelse '%s'; 'type'-argument ignoreres\n"
#: ../clients/cli/connections.c:8387
#, c-format
msgid ""
"Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"
-msgstr ""
+msgstr "Advarsel: redigerer eksisterende forbindelse '%s'; 'con-name'-argument "
+"ignoreres\n"
#: ../clients/cli/connections.c:8414
#, c-format
@@ -2186,59 +2189,60 @@ msgstr "Tilføjer en ny '%s'-forbindelse"
#: ../clients/cli/connections.c:8460
#, c-format
msgid "Type 'help' or '?' for available commands."
-msgstr ""
+msgstr "Skriv 'help' eller '?' for tilgængelige kommandoer."
#. TRANSLATORS: do not translate 'print', leave it as it is
#: ../clients/cli/connections.c:8463
#, c-format
msgid "Type 'print' to show all the connection properties."
-msgstr ""
+msgstr "Skriv 'print' for at vise alle forbindelsesegenskaberne."
#. TRANSLATORS: do not translate 'describe', leave it as it is
#: ../clients/cli/connections.c:8466
#, c-format
msgid "Type 'describe [<setting>.<prop>]' for detailed property description."
msgstr ""
+"Skriv 'describe [<indstilling>.<egenskab>]' for detaljeret beskrivelse af "
+"egenskab."
#: ../clients/cli/connections.c:8494
-#, fuzzy, c-format
+#, c-format
msgid "Error: Failed to modify connection '%s': %s"
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: Kunne ikke redigere forbindelsen '%s': %s"
#: ../clients/cli/connections.c:8500
#, c-format
msgid "Connection '%s' (%s) successfully modified.\n"
-msgstr ""
+msgstr "Forbindelsen '%s' (%s) blev ændret.\n"
#: ../clients/cli/connections.c:8567
#, c-format
msgid "%s (%s) cloned as %s (%s).\n"
-msgstr ""
+msgstr "%s (%s) klonet som %s (%s).\n"
#: ../clients/cli/connections.c:8627
-#, fuzzy
msgid "New connection name: "
msgstr "Nyt forbindelsesnavn: "
#: ../clients/cli/connections.c:8629
-#, fuzzy, c-format
+#, c-format
msgid "Error: <new name> argument is missing."
-msgstr "Fejl: %s parameter mangler."
+msgstr "Fejl: <new name>-argument mangler."
#: ../clients/cli/connections.c:8635 ../clients/cli/connections.c:9120
-#, fuzzy, c-format
+#, c-format
msgid "Error: unknown extra argument: '%s'."
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: ukendt ekstra argument: '%s'."
#: ../clients/cli/connections.c:8667
-#, fuzzy, c-format
+#, c-format
msgid "Error: not all connections deleted."
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: ikke alle forbindelser blev slettet."
#: ../clients/cli/connections.c:8668
-#, fuzzy, c-format
+#, c-format
msgid "Error: Connection deletion failed: %s\n"
-msgstr "Fejl: Forbindelsesaktivering fejlede: %s"
+msgstr "Fejl: Sletning af forbindelse mislykkedes: %s\n"
#: ../clients/cli/connections.c:8724 ../clients/cli/connections.c:8844
#, c-format
@@ -2246,9 +2250,9 @@ msgid "Error: %s.\n"
msgstr "Fejl: %s.\n"
#: ../clients/cli/connections.c:8725 ../clients/cli/connections.c:8845
-#, fuzzy, c-format
+#, c-format
msgid "Error: not all connections found."
-msgstr "Fejl: Ukendt forbindelse: %s."
+msgstr "Fejl: fandt ikke alle forbindelser."
#. truncate trailing ", "
#: ../clients/cli/connections.c:8776
@@ -2299,12 +2303,12 @@ msgstr "Fejl: %s parameter mangler."
#: ../clients/cli/connections.c:8998
#, c-format
msgid "Warning: 'type' already specified, ignoring extra one.\n"
-msgstr ""
+msgstr "Advarsel: 'type' allerede angivet, ignorerer den ekstra.\n"
#: ../clients/cli/connections.c:9013
#, c-format
msgid "Warning: 'file' already specified, ignoring extra one.\n"
-msgstr ""
+msgstr "Advarsel: 'file' allerede angivet, ignorerer den ekstra.\n"
#: ../clients/cli/connections.c:9027
#, fuzzy, c-format
@@ -2324,7 +2328,7 @@ msgstr "Fejl: 'dev list': %s"
#: ../clients/cli/connections.c:9050 ../clients/cli/connections.c:9141
#, c-format
msgid "Error: failed to load VPN plugin: %s."
-msgstr ""
+msgstr "Fejl: kunne ikke indlæse VPN-plugin: %s."
#: ../clients/cli/connections.c:9060
#, fuzzy, c-format
@@ -2333,7 +2337,7 @@ msgstr "Fejl: 'dev status': %s"
#: ../clients/cli/connections.c:9127
msgid "Output file name: "
-msgstr ""
+msgstr "Outputfilnavn: "
#: ../clients/cli/connections.c:9132
#, fuzzy, c-format
@@ -2343,7 +2347,7 @@ msgstr "Fejl: Ukendt forbindelse: %s."
#: ../clients/cli/connections.c:9154
#, c-format
msgid "Error: failed to create temporary file %s."
-msgstr ""
+msgstr "Fejl: kunne ikke oprette den midlertidige fil %s."
#: ../clients/cli/connections.c:9162
#, fuzzy, c-format
@@ -2353,7 +2357,7 @@ msgstr "Fejl: 'dev status': %s"
#: ../clients/cli/connections.c:9174
#, c-format
msgid "Error: failed to read temporary file '%s': %s."
-msgstr ""
+msgstr "Fejl: kunne ikke læse den midlertidige fil '%s': %s."
#. define some prompts
#: ../clients/cli/devices.c:23
@@ -2383,7 +2387,7 @@ msgid "%u Mb/s"
msgstr "%u Mb/s"
#: ../clients/cli/devices.c:732
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: nmcli device { COMMAND | help }\n"
"\n"
@@ -2460,6 +2464,8 @@ msgstr ""
"\n"
" wifi rescan [ifname <gfnavn>] [[ssid <SSID som skal skannes>] ...]\n"
"\n"
+" wifi show-password [gfnavn <gfnavn>]\n"
+"\n"
" lldp [list [ifname <gfnavn>]]\n"
"\n"
@@ -2556,7 +2562,7 @@ msgstr ""
"\n"
#: ../clients/cli/devices.c:805
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: nmcli device modify { ARGUMENTS | --help }\n"
"\n"
@@ -2583,16 +2589,14 @@ msgstr ""
"Rediger en eller flere egenskaber som er aktive på enheden uden at ændre\n"
"forbindelsesprofilen. Ændringerne træder i kraft med det samme. Ved "
"egenskaber\n"
-"med flere værdier kan du valgfrit bruge '+' eller '-' foran "
-"egenskabsnavnet.\n"
+"med flere værdier kan du valgfrit bruge '+' eller '-' foran egenskabsnavnet.\n"
"'+'-tegnet gør det muligt at tilføje punkter i stedet for at overskrive hele "
"værdien.\n"
"'-'-tegnet gør det muligt at fjerne valgte punkter i stedet for hele "
"værdien.\n"
"\n"
"Eksempler:\n"
-"nmcli dev mod em1 ipv4.method manual ipv4.addr \"192.168.1.2/24, "
-"10.10.1.5/8\"\n"
+"nmcli dev mod em1 ipv4.method manual ipv4.addr \"192.168.1.2/24, 10.10.1.5/8\"\n"
"nmcli dev mod em1 +ipv4.dns 8.8.4.4\n"
"nmcli dev mod em1 -ipv4.dns 1\n"
"nmcli dev mod em1 -ipv6.addr \"abbe::cafe/56\"\n"
@@ -2817,31 +2821,31 @@ msgstr ""
"\n"
#: ../clients/cli/devices.c:1021
-#, fuzzy, c-format
+#, c-format
msgid "Error: No interface specified."
-msgstr "Fejl: iface skal være angivet."
+msgstr "Fejl: Ingen grænseflade angivet."
#: ../clients/cli/devices.c:1044
#, c-format
msgid "Warning: argument '%s' is duplicated.\n"
-msgstr ""
+msgstr "Advarsel: argumentet '%s' er duplikeret.\n"
#: ../clients/cli/devices.c:1047
-#, fuzzy, c-format
+#, c-format
msgid "Error: Device '%s' not found.\n"
-msgstr "Fejl: Enhed \"%s\" ikke fundet."
+msgstr "Fejl: Enheden '%s' blev ikke fundet.\n"
#: ../clients/cli/devices.c:1048
-#, fuzzy, c-format
+#, c-format
msgid "Error: not all devices found."
-msgstr "Fejl: Ingen passende enhed fundet."
+msgstr "Fejl: fandt ikke alle enheder."
#: ../clients/cli/devices.c:1079
msgid "No interface specified"
msgstr "Ingen grænseflade angivet"
#: ../clients/cli/devices.c:1098
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' not found"
msgstr "Enheden '%s' blev ikke fundet"
@@ -2861,11 +2865,11 @@ msgstr "Ad-Hoc"
#: ../clients/cli/devices.c:1238
msgid "Infra"
-msgstr ""
+msgstr "Infra"
#: ../clients/cli/devices.c:1239 ../src/devices/wifi/nm-device-olpc-mesh.c:118
msgid "Mesh"
-msgstr ""
+msgstr "Mesh"
#: ../clients/cli/devices.c:1240
msgid "N/A"
@@ -2876,18 +2880,18 @@ msgid "Device details"
msgstr "Enhedsdetaljer"
#: ../clients/cli/devices.c:1447
-#, fuzzy, c-format
+#, c-format
msgid "Error: 'device show': %s"
-msgstr "Fejl: 'dev list': %s"
+msgstr "Fejl: 'device show': %s"
#: ../clients/cli/devices.c:1776
msgid "Status of devices"
msgstr "Status på enheder"
#: ../clients/cli/devices.c:1780
-#, fuzzy, c-format
+#, c-format
msgid "Error: 'device status': %s"
-msgstr "Fejl: 'dev status': %s"
+msgstr "Fejl: 'device status': %s"
#: ../clients/cli/devices.c:1842 ../clients/cli/general.c:511
#, c-format
@@ -2895,7 +2899,7 @@ msgid "Error: Timeout %d sec expired."
msgstr "Fejl: Ventetid på %d sek udløb."
#: ../clients/cli/devices.c:1914
-#, fuzzy, c-format
+#, c-format
msgid "Device '%s' successfully activated with '%s'.\n"
msgstr "Enheden '%s' blev aktiveret med '%s'.\n"
@@ -2903,17 +2907,17 @@ msgstr "Enheden '%s' blev aktiveret med '%s'.\n"
#, c-format
msgid ""
"Hint: \"nmcli dev wifi show-password\" shows the Wi-Fi name and password.\n"
-msgstr ""
+msgstr "Tip: \"nmcli dev wifi show-password\" viser Wi-Fi-navnet og adgangskoden.\n"
#: ../clients/cli/devices.c:1923
-#, fuzzy, c-format
+#, c-format
msgid "Error: Connection activation failed: (%d) %s.\n"
-msgstr "Fejl: Forbindelsesaktivering fejlede: %s."
+msgstr "Fejl: Forbindelsesaktivering mislykkedes: (%d) %s.\n"
#: ../clients/cli/devices.c:1953
#, c-format
msgid "Error: Failed to setup a Wi-Fi hotspot: %s"
-msgstr ""
+msgstr "Fejl: Kunne ikke opsætte et Wi-Fi-hotspot: %s"
#: ../clients/cli/devices.c:1956
#, fuzzy, c-format
@@ -2982,9 +2986,9 @@ msgid "Error: Device '%s' (%s) deletion failed: %s\n"
msgstr "Fejl: Frakobling af enhed \"%s\" (%s) mislykkedes: %s"
#: ../clients/cli/devices.c:2563
-#, fuzzy, c-format
+#, c-format
msgid "Error: No property specified."
-msgstr "Fejl: ingen korrekte parameter angivet."
+msgstr "Fejl: Ingen egenskab angivet."
#: ../clients/cli/devices.c:2579 ../clients/cli/devices.c:2598
#: ../clients/cli/general.c:773 ../clients/cli/general.c:786
@@ -2993,14 +2997,14 @@ msgid "Error: '%s' argument is missing."
msgstr "Fejl: '%s'-parameter mangler."
#: ../clients/cli/devices.c:2586
-#, fuzzy, c-format
+#, c-format
msgid "Error: 'managed': %s."
-msgstr "Fejl: 'nm status': %s"
+msgstr "Fejl: 'managed': %s."
#: ../clients/cli/devices.c:2605
-#, fuzzy, c-format
+#, c-format
msgid "Error: 'autoconnect': %s."
-msgstr "Fejl: 'con list': %s"
+msgstr "Fejl: 'autoconnect': %s."
#: ../clients/cli/devices.c:2614 ../clients/cli/general.c:801
#, fuzzy, c-format
@@ -3015,12 +3019,12 @@ msgstr "ingen enhed fundet til forbindelsen '%s'"
#: ../clients/cli/devices.c:2686
#, c-format
msgid "%s: device created\n"
-msgstr ""
+msgstr "%s: enhed oprettet\n"
#: ../clients/cli/devices.c:2693
#, c-format
msgid "%s: device removed\n"
-msgstr ""
+msgstr "%s: enhed fjernet\n"
#: ../clients/cli/devices.c:2872
msgid "Wi-Fi scan list"
@@ -3052,6 +3056,8 @@ msgid ""
"Error: Device '%s' was not recognized as a Wi-Fi device, check "
"NetworkManager Wi-Fi plugin."
msgstr ""
+"Fejl: Enheden '%s' blev ikke genkendt som en Wi-Fi-enhed, tjek "
+"NetworkManagers Wi-Fi-plugin."
#: ../clients/cli/devices.c:3257 ../clients/cli/devices.c:3586
#: ../clients/cli/devices.c:4175 ../clients/cli/devices.c:4302
@@ -3062,7 +3068,7 @@ msgstr "Fejl: Enhed '%s' er ikke en Wi-Fi-enhed."
#: ../clients/cli/devices.c:3433
msgid "SSID or BSSID: "
-msgstr ""
+msgstr "SSID eller BSSID: "
#: ../clients/cli/devices.c:3438
#, fuzzy, c-format
@@ -3079,21 +3085,25 @@ msgstr "Fejl: Værdi for tidsudløb \"%s\" er ikke korrekt."
msgid ""
"Error: wep-key-type argument value '%s' is invalid, use 'key' or 'phrase'."
msgstr ""
+"Fejl: wep-key-type-argumentets værdi '%s' er ugyldigt. Brug 'key' eller "
+"'phrase'."
#: ../clients/cli/devices.c:3532 ../clients/cli/devices.c:3550
-#, fuzzy, c-format
+#, c-format
msgid "Error: %s: %s."
-msgstr "Fejl: %s."
+msgstr "Fejl: %s: %s."
#: ../clients/cli/devices.c:3569
#, c-format
msgid "Error: BSSID to connect to (%s) differs from bssid argument (%s)."
msgstr ""
+"Fejl: BSSID til at oprette forbindelse til (%s) er ikke magen til bssid-"
+"argumentet (%s)."
#: ../clients/cli/devices.c:3575
#, c-format
msgid "Error: Parameter '%s' is neither SSID nor BSSID."
-msgstr ""
+msgstr "Fejl: Parameteren '%s' er hverken SSID eller BSSID."
#: ../clients/cli/devices.c:3588 ../clients/cli/devices.c:4177
#: ../clients/cli/devices.c:4304 ../clients/cli/devices.c:4540
@@ -3104,7 +3114,7 @@ msgstr "Fejl: Ingen passende enhed fundet."
#: ../clients/cli/devices.c:3608
#, c-format
msgid "Error: Failed to scan hidden SSID: %s."
-msgstr ""
+msgstr "Fejl: Kunne ikke skanne skjult SSID: %s."
#: ../clients/cli/devices.c:3635
#, fuzzy, c-format
@@ -3134,7 +3144,7 @@ msgstr "Adgangskode: "
#: ../clients/cli/devices.c:3887
#, c-format
msgid "'%s' is not valid WPA PSK"
-msgstr ""
+msgstr "'%s' er ikke gyldig WPA PSK"
#: ../clients/cli/devices.c:3904
#, c-format
@@ -3177,9 +3187,9 @@ msgid "Error: Invalid 'password': %s."
msgstr "Fejl: Ugyldig 'wifi'-parameter: '%s'."
#: ../clients/cli/devices.c:4262 ../clients/cli/devices.c:4487
-#, fuzzy, c-format
+#, c-format
msgid "Error: '%s' cannot repeat."
-msgstr "Fejl: Enhed \"%s\" ikke fundet."
+msgstr "Fejl: '%s' kan ikke gentage."
#: ../clients/cli/devices.c:4393 ../clients/cli/devices.c:4397
#: ../clients/cli/devices.c:4402 ../clients/cli/devices.c:4405
@@ -3188,7 +3198,6 @@ msgid "Security"
msgstr "Sikkerhed"
#: ../clients/cli/devices.c:4393
-#, fuzzy
msgid "None"
msgstr "Ingen"
@@ -3206,12 +3215,12 @@ msgstr "Ingen"
#: ../clients/tui/nmt-page-wifi.c:266 ../clients/tui/nmt-page-wifi.c:298
#: ../clients/tui/nmt-page-wifi.c:331
msgid "Password"
-msgstr ""
+msgstr "Adgangskode"
#: ../clients/cli/devices.c:4527
#, c-format
msgid "%s"
-msgstr ""
+msgstr "%s"
#. Main header name
#: ../clients/cli/devices.c:4581
@@ -3579,9 +3588,9 @@ msgstr "Fejl: kun følgende felter er tilladte: %s"
#. NetworkManager quit while we were waiting.
#: ../clients/cli/general.c:541 ../clients/tui/nmtui.c:246
-#, fuzzy, c-format
+#, c-format
msgid "NetworkManager is not running."
-msgstr "Status for NetworkManager"
+msgstr "NetworkManager kører ikke."
#: ../clients/cli/general.c:563
msgid "NetworkManager permissions"
@@ -3590,7 +3599,7 @@ msgstr "Tilladelser for NetworkManager"
#: ../clients/cli/general.c:567
#, c-format
msgid "Error: 'general permissions': %s"
-msgstr ""
+msgstr "Fejl: 'general permissions': %s"
#: ../clients/cli/general.c:644
#, fuzzy, c-format
@@ -3614,7 +3623,7 @@ msgstr "Logning for NetworkManager"
#: ../clients/cli/general.c:712
#, c-format
msgid "Error: 'general logging': %s"
-msgstr ""
+msgstr "Fejl: 'general logging': %s"
#: ../clients/cli/general.c:744
#, fuzzy, c-format
@@ -3729,14 +3738,12 @@ msgid "plugin missing"
msgstr "plugin mangler"
#: ../clients/cli/general.c:1273 ../clients/cli/general.c:1287
-#, fuzzy
msgid "sw disabled"
-msgstr "deaktiveret"
+msgstr "sw deaktiveret"
#: ../clients/cli/general.c:1278 ../clients/cli/general.c:1292
-#, fuzzy
msgid "hw disabled"
-msgstr "deaktiveret"
+msgstr "hw deaktiveret"
#: ../clients/cli/general.c:1303
msgid "sw"
@@ -3786,15 +3793,15 @@ msgstr "%s VPN-forbindelse"
#, c-format
msgctxt "nmcli-overview"
msgid "%s: %s to %s"
-msgstr ""
+msgstr "%s: %s til %s"
#. TRANSLATORS: prints header line for not active device in plain `nmcli` overview output as
#. * "<interface-name>: <device-state>"
#: ../clients/cli/general.c:1443
-#, fuzzy, c-format
+#, c-format
msgctxt "nmcli-overview"
msgid "%s: %s"
-msgstr "Fejl: %s."
+msgstr "%s: %s"
#: ../clients/cli/general.c:1493
#, c-format
@@ -3892,22 +3899,22 @@ msgstr "Fejl: Mangler argument for tilvalget '%s'."
#: ../clients/cli/nmcli.c:621
#, c-format
msgid "Unexpected end of file following '%s'\n"
-msgstr ""
+msgstr "Uventet slutning på fil efter '%s'\n"
#: ../clients/cli/nmcli.c:629
#, c-format
msgid "Expected whitespace following '%s'\n"
-msgstr ""
+msgstr "Forventede blanktegn efter '%s'\n"
#: ../clients/cli/nmcli.c:641
#, c-format
msgid "Expected a value for '%s'\n"
-msgstr ""
+msgstr "Forventede en værdi til '%s'\n"
#: ../clients/cli/nmcli.c:655
#, c-format
msgid "Expected a line break following '%s'\n"
-msgstr ""
+msgstr "Forventede et linjeskift efter '%s'\n"
#: ../clients/cli/nmcli.c:761
#, c-format
@@ -3932,7 +3939,7 @@ msgstr "Fejl: Tilvalg '--pretty' kan ikke bruges sammen med '--terse'."
#: ../clients/cli/nmcli.c:794
#, c-format
msgid "Error: '%s' is not a valid argument for '%s' option."
-msgstr ""
+msgstr "Fejl: '%s' er ikke et gyldigt argument til tilvalget '%s'."
#: ../clients/cli/nmcli.c:808 ../clients/cli/nmcli.c:820
#, c-format
@@ -3942,7 +3949,7 @@ msgstr "Fejl: '%s' er ikke et gyldigt argument for tilvalget '%s'."
#: ../clients/cli/nmcli.c:844
#, c-format
msgid "Error: '%s' is not a valid timeout."
-msgstr ""
+msgstr "Fejl: '%s' er ikke en gyldig timeout."
#: ../clients/cli/nmcli.c:851
#, c-format
@@ -3976,12 +3983,12 @@ msgstr ""
#: ../clients/cli/settings.c:32
#, c-format
msgid "Do you also want to set '%s' to '%s'? [yes]: "
-msgstr ""
+msgstr "Vil du også indstille '%s' til '%s'? [ja]: "
#: ../clients/cli/settings.c:34
#, c-format
msgid "Do you also want to clear '%s'? [yes]: "
-msgstr ""
+msgstr "Vil du også rydde '%s'? [ja]: "
#: ../clients/cli/settings.c:229
#, c-format
@@ -3996,22 +4003,22 @@ msgstr ""
#: ../clients/cli/settings.c:250
msgid "Do you want to remove them? [yes] "
-msgstr ""
+msgstr "Vil du fjerne dem? [ja] "
#: ../clients/cli/settings.c:338
#, c-format
msgid "Warning: %s is not an UUID of any existing connection profile\n"
-msgstr ""
+msgstr "Advarsel: %s er ikke et UUID på en eksisterende forbindelsesprofil\n"
#: ../clients/cli/settings.c:343 ../clients/cli/settings.c:356
-#, fuzzy, c-format
+#, c-format
msgid "'%s' is not a VPN connection profile"
-msgstr "VPN-forbindelse fejlede"
+msgstr "'%s' er ikke en VPN-forbindelsesprofil"
#: ../clients/cli/settings.c:350
#, c-format
msgid "'%s' is not a name of any exiting profile"
-msgstr ""
+msgstr "'%s' er ikke et navn på en eksisterende profil"
#: ../clients/cli/settings.c:394
#, c-format
@@ -4029,7 +4036,7 @@ msgstr ""
#: ../clients/cli/settings.c:578
msgid "the property can't be changed"
-msgstr ""
+msgstr "egenskaben kan ikke ændres"
#: ../clients/cli/settings.c:656
msgid "[NM property description]"
@@ -4067,12 +4074,12 @@ msgstr "Kunne ikke dekryptere den private nøgle."
#: ../clients/cli/utils.c:1427
#, c-format
msgid "Error reading nmcli output: %s\n"
-msgstr ""
+msgstr "Fejl ved læsning af nmcli-output: %s\n"
#: ../clients/cli/utils.c:1432
#, c-format
msgid "Error writing nmcli output: %s\n"
-msgstr ""
+msgstr "Fejl ved skrivning af nmcli-output: %s\n"
#: ../clients/cli/utils.c:1458
#, c-format
@@ -4128,17 +4135,17 @@ msgstr "Fejl: '%s' er ikke et gyldigt argument for tilvalget '%s'."
#: ../clients/common/nm-client-utils.c:152
#, c-format
msgid "'%s' is not valid; use [%s], [%s] or [%s]"
-msgstr ""
+msgstr "'%s' er ikke gyldigt; brug [%s], [%s] eller [%s]"
#: ../clients/common/nm-client-utils.c:201
-#, fuzzy, c-format
+#, c-format
msgid "'%s' is ambiguous: %s"
-msgstr "Fejl: '%s' er ikke et gyldigt argument for tilvalget '%s'."
+msgstr "'%s' er flertydig: %s"
#: ../clients/common/nm-client-utils.c:211
#, c-format
msgid "missing name, try one of [%s]"
-msgstr ""
+msgstr "manglende navn, prøv en af [%s]"
#: ../clients/common/nm-client-utils.c:253
msgid "unmanaged"
@@ -4165,14 +4172,12 @@ msgid "connecting (getting IP configuration)"
msgstr "forbinder (henter IP-konfiguration)"
#: ../clients/common/nm-client-utils.c:260
-#, fuzzy
msgid "connecting (checking IP connectivity)"
-msgstr "forbinder (henter IP-konfiguration)"
+msgstr "opretter forbindelse (tjekker IP-forbindelse)"
#: ../clients/common/nm-client-utils.c:261
-#, fuzzy
msgid "connecting (starting secondary connections)"
-msgstr "forbinder (henter IP-konfiguration)"
+msgstr "opretter forbindelse (starter sekundære forbindelser)"
#: ../clients/common/nm-client-utils.c:264
msgid "connection failed"
@@ -4184,28 +4189,25 @@ msgstr "forbindelse fejlet"
#: ../clients/common/nm-client-utils.c:274
#: ../clients/common/nm-client-utils.c:275
#: ../clients/common/nm-client-utils.c:276
-#, fuzzy
msgid "connecting (externally)"
-msgstr "forbinder (forbereder)"
+msgstr "opretter forbindelse (eksternt)"
#: ../clients/common/nm-client-utils.c:277
-#, fuzzy
msgid "connected (externally)"
-msgstr "tilsluttet (kun sted)"
+msgstr "forbundet (eksternt)"
#: ../clients/common/nm-client-utils.c:278
#: ../clients/common/nm-client-utils.c:279
-#, fuzzy
msgid "deactivating (externally)"
-msgstr "deaktiverer"
+msgstr "deaktiverer (eksternt)"
#: ../clients/common/nm-client-utils.c:304
msgid "yes (guessed)"
-msgstr ""
+msgstr "ja (gættet)"
#: ../clients/common/nm-client-utils.c:305
msgid "no (guessed)"
-msgstr ""
+msgstr "nej (gættet)"
#. TRANSLATORS: Unknown reason for a device state change (NMDeviceStateReason)
#. TRANSLATORS: Unknown reason for a connection state change (NMActiveConnectionStateReason)
@@ -4216,7 +4218,7 @@ msgstr "Ukendt"
#: ../clients/common/nm-client-utils.c:312
msgid "No reason given"
-msgstr ""
+msgstr "Der er ikke angivet nogen årsag"
#: ../clients/common/nm-client-utils.c:314
msgid "Device is now managed"
@@ -4261,64 +4263,56 @@ msgid "802.1X supplicant took too long to authenticate"
msgstr ""
#: ../clients/common/nm-client-utils.c:324
-#, fuzzy
msgid "PPP service failed to start"
-msgstr "VPN-tjenesten kunne ikke starte"
+msgstr "PPP-tjeneste kunne ikke starte"
#: ../clients/common/nm-client-utils.c:325
-#, fuzzy
msgid "PPP service disconnected"
-msgstr "VPN afbrudt"
+msgstr "PPP-tjeneste afbrudt"
#: ../clients/common/nm-client-utils.c:326
msgid "PPP failed"
-msgstr ""
+msgstr "PPP mislykkedes"
#: ../clients/common/nm-client-utils.c:327
-#, fuzzy
msgid "DHCP client failed to start"
-msgstr "VPN-tjenesten kunne ikke starte"
+msgstr "DHCP-klient kunne ikke starte"
#: ../clients/common/nm-client-utils.c:328
msgid "DHCP client error"
-msgstr ""
+msgstr "Fejl ved DHCP-klient"
#: ../clients/common/nm-client-utils.c:329
-#, fuzzy
msgid "DHCP client failed"
-msgstr "VPN-forbindelse fejlede"
+msgstr "DHCP-klient mislykkedes"
#: ../clients/common/nm-client-utils.c:330
-#, fuzzy
msgid "Shared connection service failed to start"
-msgstr "VPN-tjenesten kunne ikke starte"
+msgstr "Delt forbindelsetjeneste kunne ikke starte"
#: ../clients/common/nm-client-utils.c:331
-#, fuzzy
msgid "Shared connection service failed"
-msgstr "forbindelse fejlet"
+msgstr "Delt forbindelsetjeneste mislykkedes"
#: ../clients/common/nm-client-utils.c:332
-#, fuzzy
msgid "AutoIP service failed to start"
-msgstr "VPN-tjenesten kunne ikke starte"
+msgstr "AutoIP-tjeneste kunne ikke starte"
#: ../clients/common/nm-client-utils.c:333
msgid "AutoIP service error"
-msgstr ""
+msgstr "Fejl ved AutoIP-tjeneste"
#: ../clients/common/nm-client-utils.c:334
-#, fuzzy
msgid "AutoIP service failed"
-msgstr "VPN-tjenesten kunne ikke starte"
+msgstr "AutoIP-tjeneste mislykkedes"
#: ../clients/common/nm-client-utils.c:335
msgid "The line is busy"
-msgstr ""
+msgstr "Linjen er optaget"
#: ../clients/common/nm-client-utils.c:336
msgid "No dial tone"
-msgstr ""
+msgstr "Ingen ringetone"
#: ../clients/common/nm-client-utils.c:337
msgid "No carrier could be established"
@@ -4401,14 +4395,12 @@ msgid "The supplicant is now available"
msgstr ""
#: ../clients/common/nm-client-utils.c:355
-#, fuzzy
msgid "The modem could not be found"
-msgstr "'dhcpcd' blev fundet."
+msgstr "Kunne ikke finde modemmet."
#: ../clients/common/nm-client-utils.c:356
-#, fuzzy
msgid "The Bluetooth connection failed or timed out"
-msgstr "forbindelsesforsøget udløb"
+msgstr "Bluetooth-forbindelse mislykkedes eller fik timeout"
#: ../clients/common/nm-client-utils.c:357
msgid "GSM Modem's SIM card not inserted"
@@ -4431,9 +4423,8 @@ msgid "InfiniBand device does not support connected mode"
msgstr ""
#: ../clients/common/nm-client-utils.c:362
-#, fuzzy
msgid "A dependency of the connection failed"
-msgstr "forbindelse fejlet"
+msgstr "En afhængighed af forbindelsen mislykkedes"
#: ../clients/common/nm-client-utils.c:363
msgid "A problem with the RFC 2684 Ethernet over ADSL bridge"
@@ -4444,9 +4435,8 @@ msgid "ModemManager is unavailable"
msgstr ""
#: ../clients/common/nm-client-utils.c:365
-#, fuzzy
msgid "The Wi-Fi network could not be found"
-msgstr "'dhclient' blev fundet."
+msgstr "Kunne ikke finde Wi-Fi-netværket"
#: ../clients/common/nm-client-utils.c:366
msgid "A secondary connection of the base connection failed"
@@ -4720,14 +4710,14 @@ msgid "invalid option '%s', use one of [%s]"
msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:1714
-#, fuzzy, c-format
+#, c-format
msgid "%d (key)"
-msgstr "%d (hex-ascii-nøgle)"
+msgstr "%d (nøgle)"
#: ../clients/common/nm-meta-setting-desc.c:1716
-#, fuzzy, c-format
+#, c-format
msgid "%d (passphrase)"
-msgstr "%d (104/128-bit adgangsfrase)"
+msgstr "%d (adgangsfrase)"
#: ../clients/common/nm-meta-setting-desc.c:1719
#, c-format
@@ -4755,9 +4745,8 @@ msgid "MVRP, "
msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:1765
-#, fuzzy
msgid "0 (none)"
-msgstr "(ingen)"
+msgstr "0 (ingen)"
#: ../clients/common/nm-meta-setting-desc.c:1771
msgid "agent-owned, "
@@ -4883,14 +4872,12 @@ msgid "the value '%s' is not a valid UUID"
msgstr "Fejl: Værdi for tidsudløb \"%s\" er ikke korrekt."
#: ../clients/common/nm-meta-setting-desc.c:2753
-#, fuzzy
msgid "0 (disabled)"
-msgstr "deaktiveret"
+msgstr "0 (deaktiveret)"
#: ../clients/common/nm-meta-setting-desc.c:2759
-#, fuzzy
msgid "enabled, "
-msgstr "aktiveret"
+msgstr "aktiveret, "
#: ../clients/common/nm-meta-setting-desc.c:2761
msgid "advertise, "
@@ -4944,14 +4931,14 @@ msgid "default"
msgstr "standard"
#: ../clients/common/nm-meta-setting-desc.c:3235
-#, fuzzy, c-format
+#, c-format
msgid "invalid IPv%c address '%s'"
-msgstr "ugyldigt felt '%s'"
+msgstr "ugyldig IPv%c adresse '%s'"
#: ../clients/common/nm-meta-setting-desc.c:3362
-#, fuzzy, c-format
+#, c-format
msgid "invalid gateway address '%s'"
-msgstr "ugyldigt felt '%s'"
+msgstr "ugyldig gatewayadresse '%s'"
#: ../clients/common/nm-meta-setting-desc.c:3514
#, c-format
@@ -5597,14 +5584,12 @@ msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:7912
#: ../src/devices/adsl/nm-device-adsl.c:117
-#, fuzzy
msgid "ADSL connection"
-msgstr "System forbindelser"
+msgstr "ADSL-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7913
-#, fuzzy
msgid "bluetooth connection"
-msgstr "forbinder"
+msgstr "bluetooth-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7914
msgid "Bond device"
@@ -5673,9 +5658,8 @@ msgid "MACsec connection"
msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:7929
-#, fuzzy
msgid "macvlan connection"
-msgstr "forbinder"
+msgstr "macvlan-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7930
msgid "Match"
@@ -5749,50 +5733,42 @@ msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:7947
#: ../src/devices/nm-device-vlan.c:385
-#, fuzzy
msgid "VLAN connection"
-msgstr "VPN-forbinder"
+msgstr "VLAN-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7948 ../src/nm-manager.c:5714
-#, fuzzy
msgid "VPN connection"
-msgstr "VPN-forbinder"
+msgstr "VPN-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7949
#: ../src/devices/nm-device-vrf.c:175
-#, fuzzy
msgid "VRF connection"
-msgstr "VPN-forbinder"
+msgstr "VRF-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7950
#: ../src/devices/nm-device-vxlan.c:354
-#, fuzzy
msgid "VXLAN connection"
-msgstr "VPN-forbinder"
+msgstr "VXLAN-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7951
-#, fuzzy
msgid "Wi-Fi P2P connection"
-msgstr "forbindelse fejlet"
+msgstr "Wi-Fi P2P-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7952
-#, fuzzy
msgid "WiMAX connection"
-msgstr "Aktive forbindelser"
+msgstr "WiMAX-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7953
-#, fuzzy
msgid "Wired Ethernet"
-msgstr "Aktive forbindelser"
+msgstr "Kablet ethernet"
#: ../clients/common/nm-meta-setting-desc.c:7954
msgid "WireGuard VPN settings"
msgstr ""
#: ../clients/common/nm-meta-setting-desc.c:7955
-#, fuzzy
msgid "Wi-Fi connection"
-msgstr "forbindelse fejlet"
+msgstr "Wi-Fi-forbindelse"
#: ../clients/common/nm-meta-setting-desc.c:7956
msgid "Wi-Fi security settings"
@@ -5840,9 +5816,8 @@ msgid "Service"
msgstr ""
#: ../clients/common/nm-secret-agent-simple.c:473
-#, fuzzy
msgid "WireGuard private-key"
-msgstr "WireGuard"
+msgstr "WireGuard private-key"
#: ../clients/common/nm-secret-agent-simple.c:514
#, fuzzy, c-format
@@ -5897,9 +5872,8 @@ msgid "PIN code is needed for the mobile broadband device"
msgstr "Aktiver eller deaktiver mobile bredbåndsenheder"
#: ../clients/common/nm-secret-agent-simple.c:893
-#, fuzzy
msgid "PIN"
-msgstr "VPN"
+msgstr "PIN"
#: ../clients/common/nm-secret-agent-simple.c:898
#: ../clients/common/nm-secret-agent-simple.c:933
@@ -5921,18 +5895,17 @@ msgid "MACsec EAP authentication"
msgstr ""
#: ../clients/common/nm-secret-agent-simple.c:927
-#, fuzzy
msgid "WireGuard VPN secret"
-msgstr "WireGuard"
+msgstr "WireGuard VPN-hemmelighed"
#: ../clients/common/nm-secret-agent-simple.c:966
msgid "VPN password required"
msgstr ""
#: ../clients/common/nm-vpn-helpers.c:39
-#, fuzzy, c-format
+#, c-format
msgid "unknown VPN plugin \"%s\""
-msgstr "Ukendt logningsdomæne '%s'"
+msgstr "ukendt VPN-plugin \"%s\""
#: ../clients/common/nm-vpn-helpers.c:50
#, c-format
@@ -8890,9 +8863,8 @@ msgid "Short IEEE 802.15.4 address to be used within a restricted environment."
msgstr ""
#: ../clients/nm-online.c:77
-#, fuzzy
msgid "Connecting"
-msgstr "forbinder"
+msgstr "Opretter forbindelse"
#: ../clients/nm-online.c:193
#, fuzzy, c-format
@@ -8930,8 +8902,7 @@ msgstr ""
#: ../clients/nm-online.c:272 ../clients/nm-online.c:278
#, fuzzy
msgid "Invalid option. Please use --help to see a list of valid options."
-msgstr ""
-"Ugyldigt tilvalg. Brug venligst --help for at se en liste af gyldige "
+msgstr "Ugyldigt tilvalg. Brug venligst --help for at se en liste af gyldige "
"tilvalg.\n"
#: ../clients/tui/newt/nmt-newt-utils.c:163 ../clients/tui/nmt-editor.c:420
@@ -8962,18 +8933,18 @@ msgid "Ethernet"
msgstr ""
#: ../clients/tui/nm-editor-utils.c:139
-#, fuzzy, c-format
+#, c-format
msgid "Ethernet connection %d"
-msgstr "Bruger forbindelser"
+msgstr "Ethernet-forbindelse %d"
#: ../clients/tui/nm-editor-utils.c:143 ../libnm/nm-device.c:1569
msgid "Wi-Fi"
msgstr ""
#: ../clients/tui/nm-editor-utils.c:147
-#, fuzzy, c-format
+#, c-format
msgid "Wi-Fi connection %d"
-msgstr "forbindelse fejlet"
+msgstr "Wi-Fi-forbindelse %d"
#: ../clients/tui/nm-editor-utils.c:152 ../libnm-core/nm-connection.c:2713
#: ../libnm/nm-device.c:1585
@@ -8995,14 +8966,13 @@ msgid "Mobile broadband connection %d"
msgstr "ingen enhed fundet til forbindelsen '%s'"
#: ../clients/tui/nm-editor-utils.c:170 ../clients/tui/nmt-page-dsl.c:49
-#, fuzzy
msgid "DSL"
-msgstr "DNS"
+msgstr "DSL"
#: ../clients/tui/nm-editor-utils.c:174
-#, fuzzy, c-format
+#, c-format
msgid "DSL connection %d"
-msgstr "forbindelse fejlet"
+msgstr "DSL-forbindelse %d"
#: ../clients/tui/nm-editor-utils.c:179 ../libnm-core/nm-connection.c:2705
#: ../libnm/nm-device.c:1587
@@ -9043,9 +9013,9 @@ msgid "VLAN"
msgstr "VLAN"
#: ../clients/tui/nm-editor-utils.c:210
-#, fuzzy, c-format
+#, c-format
msgid "VLAN connection %d"
-msgstr "VPN-forbindelse fejlede"
+msgstr "VLAN-forbindelse %d"
#: ../clients/tui/nm-editor-utils.c:214 ../clients/tui/nmt-page-ip-tunnel.c:123
#, fuzzy
@@ -9565,9 +9535,8 @@ msgid "WPA & WPA2 Personal"
msgstr "WPA & WPA2 Personal"
#: ../clients/tui/nmt-page-wifi.c:69
-#, fuzzy
msgid "WPA3 Personal"
-msgstr "WPA & WPA2 Personal"
+msgstr "WPA3 Personal"
#: ../clients/tui/nmt-page-wifi.c:70
msgid "WPA & WPA2 Enterprise"
@@ -9725,9 +9694,8 @@ msgid "Could not deactivate connection: %s"
msgstr "ingen aktiv forbindelse på enhed '%s'"
#: ../clients/tui/nmtui-connect.c:252
-#, fuzzy
msgid "Connecting..."
-msgstr "forbinder"
+msgstr "Opretter forbindelse ..."
#: ../clients/tui/nmtui-connect.c:290 ../clients/tui/nmtui-connect.c:327
#, fuzzy, c-format
@@ -9735,14 +9703,12 @@ msgid "Could not activate connection: %s"
msgstr "ingen aktiv forbindelse på enhed '%s'"
#: ../clients/tui/nmtui-connect.c:389 ../clients/tui/nmtui-connect.c:438
-#, fuzzy
msgid "Activate"
-msgstr "aktiveret"
+msgstr "Aktivér"
#: ../clients/tui/nmtui-connect.c:391
-#, fuzzy
msgid "Deactivate"
-msgstr "aktiveret"
+msgstr "Deaktivér"
#: ../clients/tui/nmtui-connect.c:443 ../clients/tui/nmtui-edit.c:105
#: ../clients/tui/nmtui.c:117
@@ -9778,9 +9744,8 @@ msgid ""
msgstr ""
#: ../clients/tui/nmtui-edit.c:401 ../clients/tui/nmtui-edit.c:417
-#, fuzzy
msgid "New Connection"
-msgstr "Bruger forbindelser"
+msgstr "Ny forbindelse"
#: ../clients/tui/nmtui-edit.c:456
#, fuzzy, c-format
@@ -11023,9 +10988,8 @@ msgstr "ugyldigt felt '%s'"
#: ../libnm-core/nm-setting-ip-config.c:1273
#: ../libnm-core/nm-setting-sriov.c:413
-#, fuzzy
msgid "unknown attribute"
-msgstr "ukendt årsag"
+msgstr "ukendt attribut"
#: ../libnm-core/nm-setting-ip-config.c:1283
#: ../libnm-core/nm-setting-sriov.c:423
@@ -12748,8 +12712,7 @@ msgstr "Status for NetworkManager"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:4
#, fuzzy
msgid "System policy prevents reloading NetworkManager"
-msgstr ""
-"Systempolitik forhindrer aktivering eller deaktivering af systemnetværk"
+msgstr "Systempolitik forhindrer aktivering eller deaktivering af systemnetværk"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:5
msgid ""
@@ -12812,8 +12775,7 @@ msgstr "Tillad kontrol af netværksforbindelser"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:16
#, fuzzy
msgid "System policy prevents Wi-Fi scans"
-msgstr ""
-"Systempolitik forhindrer aktivering eller deaktivering af Wi-Fi-enheder"
+msgstr "Systempolitik forhindrer aktivering eller deaktivering af Wi-Fi-enheder"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:17
msgid "Connection sharing via a protected Wi-Fi network"
@@ -12891,8 +12853,7 @@ msgstr "Aktiver eller deaktiver Wi-Fi-enheder"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:32
#, fuzzy
msgid "System policy prevents enabling or disabling device statistics"
-msgstr ""
-"Systempolitik forhindrer aktivering eller deaktivering af Wi-Fi-enheder"
+msgstr "Systempolitik forhindrer aktivering eller deaktivering af Wi-Fi-enheder"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:33
#, fuzzy
@@ -12902,8 +12863,7 @@ msgstr "Aktiver eller deaktiver systemnetværk"
#: ../data/org.freedesktop.NetworkManager.policy.in.in.h:34
#, fuzzy
msgid "System policy prevents enabling or disabling connectivity checking"
-msgstr ""
-"Systempolitik forhindrer aktivering eller deaktivering af systemnetværk"
+msgstr "Systempolitik forhindrer aktivering eller deaktivering af systemnetværk"
#: ../shared/nm-glib-aux/nm-shared-utils.c:2346
#, c-format
@@ -13139,9 +13099,8 @@ msgid "connection does not match device"
msgstr "ingen aktiv forbindelse eller enhed"
#: ../src/devices/nm-device-6lowpan.c:177
-#, fuzzy
msgid "6LOWPAN connection"
-msgstr "VPN-forbinder"
+msgstr "6LOWPAN-forbindelse"
#: ../src/devices/nm-device-bond.c:57
#, fuzzy
@@ -13159,19 +13118,17 @@ msgid "Dummy connection"
msgstr "System forbindelser"
#: ../src/devices/nm-device-ethernet.c:1618
-#, fuzzy
msgid "PPPoE connection"
-msgstr "VPN-forbinder"
+msgstr "PPPoE-forbindelse"
#: ../src/devices/nm-device-ethernet.c:1618
-#, fuzzy
msgid "Wired connection"
-msgstr "Aktive forbindelser"
+msgstr "Kablet forbindelse"
#: ../src/devices/nm-device-ethernet-utils.c:20
-#, fuzzy, c-format
+#, c-format
msgid "Wired connection %d"
-msgstr "Aktive forbindelser"
+msgstr "Kablet forbindelse %d"
#: ../src/devices/nm-device-ip-tunnel.c:408
#, fuzzy
@@ -13179,19 +13136,16 @@ msgid "IP tunnel connection"
msgstr "System forbindelser"
#: ../src/devices/nm-device-macvlan.c:365
-#, fuzzy
msgid "MACVLAN connection"
-msgstr "VPN-forbinder"
+msgstr "MACVLAN-forbindelse"
#: ../src/devices/nm-device-tun.c:142
-#, fuzzy
msgid "TUN connection"
-msgstr "Bruger forbindelser"
+msgstr "TUN-forbindelse"
#: ../src/devices/nm-device-wpan.c:54
-#, fuzzy
msgid "WPAN connection"
-msgstr "VPN-forbinder"
+msgstr "WPAN-forbindelse"
#: ../src/devices/team/nm-device-team.c:89
#, fuzzy
@@ -13534,55 +13488,3 @@ msgstr "Ukendt logningsniveau '%s'"
#, c-format
msgid "Unknown log domain '%s'"
msgstr "Ukendt logningsdomæne '%s'"
-
-#, c-format
-#~ msgid "missing colon in 'password' entry '%s'"
-#~ msgstr "manglende kolon i 'password'-indslaget '%s'"
-
-#, c-format
-#~ msgid "missing dot in 'password' entry '%s'"
-#~ msgstr "manglende punktum i 'password'-indslaget '%s'"
-
-#, c-format
-#~ msgid "invalid setting name in 'password' entry '%s'"
-#~ msgstr "ugyldig indstillingsnavn i 'password'-indslaget '%s'"
-
-#, c-format
-#~ msgid "Unknown parameter: %s\n"
-#~ msgstr "Ukendt parameter: %s\n"
-
-#, c-format
-#~ msgid "Error: '%s': %s"
-#~ msgstr "Fejl: '%s': %s"
-
-#, c-format
-#~ msgid "Error: error adding bond option '%s=%s'."
-#~ msgstr "Fejl: fejl ved tilføjelse af bindingstilvalget '%s=%s'."
-
-#, c-format
-#~ msgid "Unknown parameter: %s"
-#~ msgstr "Ukendt parameter: %s"
-
-#, fuzzy, c-format
-#~ msgid "Error: Device activation failed: device was disconnected"
-#~ msgstr "Fejl: Forbindelsesaktivering fejlede: %s"
-
-#, fuzzy, c-format
-#~ msgid "Error: Unknown parameter %s."
-#~ msgstr "Ukendt parameter: %s\n"
-
-#, fuzzy, c-format
-#~ msgid "Authentication message: %s\n"
-#~ msgstr "Aktiv forbindelsestilstand: %s\n"
-
-#, fuzzy, c-format
-#~ msgid "Authentication error: %s\n"
-#~ msgstr "Aktiv forbindelsestilstand: %s\n"
-
-#, fuzzy, c-format
-#~ msgid "'%s' is not valid master; use ifname or connection UUID"
-#~ msgstr "Fejl: '%s' er ikke et gyldigt argument for tilvalget '%s'."
-
-#, fuzzy, c-format
-#~ msgid "unknown link watcher \"%s\""
-#~ msgstr "Ukendt logningsdomæne '%s'"
diff --git a/po/uk.po b/po/uk.po
index 5d8a84da2c..27ef26dd73 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/NetworkManager/NetworkMan"
"ager/issues\n"
-"POT-Creation-Date: 2020-10-11 03:28+0000\n"
-"PO-Revision-Date: 2020-10-11 12:06+0300\n"
+"POT-Creation-Date: 2020-11-29 03:30+0000\n"
+"PO-Revision-Date: 2020-11-29 10:14+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
@@ -108,7 +108,7 @@ msgstr "Помилка: не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ агеÐ
#: ../clients/cli/common.c:342 ../clients/cli/common.c:343
#: ../clients/cli/common.c:373 ../clients/cli/common.c:374
-#: ../clients/cli/connections.c:1568
+#: ../clients/cli/connections.c:1569
msgid "GROUP"
msgstr "ГРУПÐ"
@@ -178,8 +178,8 @@ msgstr "Помилка: помилка під Ñ‡Ð°Ñ Ñпроби з'єднатÐ
#: ../clients/common/nm-client-utils.c:320
#: ../clients/common/nm-meta-setting-desc.c:1766
#: ../clients/common/nm-meta-setting-desc.c:1797
-#: ../clients/common/nm-meta-setting-desc.c:2738
-#: ../clients/common/nm-meta-setting-desc.c:2795
+#: ../clients/common/nm-meta-setting-desc.c:2741
+#: ../clients/common/nm-meta-setting-desc.c:2798
msgid "unknown"
msgstr "невідомо"
@@ -277,7 +277,7 @@ msgstr "VPN роз'єднано"
msgid "never"
msgstr "ніколи"
-#: ../clients/cli/connections.c:922
+#: ../clients/cli/connections.c:923
#, c-format
msgid ""
"Usage: nmcli connection { COMMAND | help }\n"
@@ -355,7 +355,7 @@ msgstr ""
" export [id | uuid | path] <ідентифікатор> [<файл результатів>]\n"
"\n"
-#: ../clients/cli/connections.c:948
+#: ../clients/cli/connections.c:949
#, c-format
msgid ""
"Usage: nmcli connection show { ARGUMENTS | help }\n"
@@ -403,7 +403,7 @@ msgstr ""
"Якщо вказано параметр «--active», братимутьÑÑ Ð´Ð¾ уваги лише активні профілі. "
"Загальний параметр --show-secrets покаже також пов'Ñзані паролі.\n"
-#: ../clients/cli/connections.c:969
+#: ../clients/cli/connections.c:970
#, c-format
msgid ""
"Usage: nmcli connection up { ARGUMENTS | help }\n"
@@ -449,7 +449,7 @@ msgstr ""
"passwd-file - файл з паролÑми, потрібними Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— з'єднаннÑ\n"
"\n"
-#: ../clients/cli/connections.c:992
+#: ../clients/cli/connections.c:993
#, c-format
msgid ""
"Usage: nmcli connection down { ARGUMENTS | help }\n"
@@ -471,7 +471,7 @@ msgstr ""
"назвою, UUID або шлÑхом D-Bus.\n"
"\n"
-#: ../clients/cli/connections.c:1004
+#: ../clients/cli/connections.c:1005
#, c-format
msgid ""
"Usage: nmcli connection add { ARGUMENTS | help }\n"
@@ -601,7 +601,7 @@ msgid ""
" [tap yes|no]\n"
"\n"
" vxlan: id <VXLAN ID>\n"
-" remote <IP of multicast group or remote address>\n"
+" [remote <IP of multicast group or remote address>]\n"
" [local <source IP>]\n"
" [dev <parent device (ifname or connection UUID)>]\n"
" [source-port-min <0-65535>]\n"
@@ -763,7 +763,7 @@ msgstr ""
" [tap yes|no]\n"
"\n"
" vxlan: id <ідентифікатор VXLAN>\n"
-" remote <IP групи транÑлÑції або віддалена адреÑа>\n"
+" [remote <IP групи транÑлÑції або віддалена адреÑа>]\n"
" [local <IP джерела>]\n"
" [dev <батьківÑький приÑтрій (назва інтерфейÑу або UUID "
"з'єднаннÑ)>]\n"
@@ -793,7 +793,7 @@ msgstr ""
" [ip6 <адреÑа IPv6>] [gw6 <шлюз IPv6>]\n"
"\n"
-#: ../clients/cli/connections.c:1132
+#: ../clients/cli/connections.c:1133
#, c-format
msgid ""
"Usage: nmcli connection modify { ARGUMENTS | help }\n"
@@ -850,7 +850,7 @@ msgstr ""
"nmcli con mod em1-1 remove sriov\n"
"\n"
-#: ../clients/cli/connections.c:1160
+#: ../clients/cli/connections.c:1161
#, c-format
msgid ""
"Usage: nmcli connection clone { ARGUMENTS | help }\n"
@@ -873,7 +873,7 @@ msgstr ""
"ідентифікатора (задаєтьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ <нова назва>).\n"
"\n"
-#: ../clients/cli/connections.c:1172
+#: ../clients/cli/connections.c:1173
#, c-format
msgid ""
"Usage: nmcli connection edit { ARGUMENTS | help }\n"
@@ -901,7 +901,7 @@ msgstr ""
"Додати новий профіль з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð° допомогою інтерактивного редактора.\n"
"\n"
-#: ../clients/cli/connections.c:1187
+#: ../clients/cli/connections.c:1188
#, c-format
msgid ""
"Usage: nmcli connection delete { ARGUMENTS | help }\n"
@@ -920,7 +920,7 @@ msgstr ""
"Профіль можна вказати за допомогою назви, UUID або шлÑху D-Bus.\n"
"\n"
-#: ../clients/cli/connections.c:1198
+#: ../clients/cli/connections.c:1199
#, c-format
msgid ""
"Usage: nmcli connection monitor { ARGUMENTS | help }\n"
@@ -942,7 +942,7 @@ msgstr ""
"Стежить за уÑіма профілÑми з'єднань, Ñкщо конкретний профіль не вказано.\n"
"\n"
-#: ../clients/cli/connections.c:1210
+#: ../clients/cli/connections.c:1211
#, c-format
msgid ""
"Usage: nmcli connection reload { help }\n"
@@ -955,7 +955,7 @@ msgstr ""
"Перезавантажити уÑÑ–Ñ… файли з'єднань з диÑка.\n"
"\n"
-#: ../clients/cli/connections.c:1218
+#: ../clients/cli/connections.c:1219
#, c-format
msgid ""
"Usage: nmcli connection load { ARGUMENTS | help }\n"
@@ -978,7 +978,7 @@ msgstr ""
"того, щоб завантажити до NetworkManager найÑвіжіші налаштуваннÑ.\n"
"\n"
-#: ../clients/cli/connections.c:1231
+#: ../clients/cli/connections.c:1232
#, c-format
msgid ""
"Usage: nmcli connection import { ARGUMENTS | help }\n"
@@ -1003,7 +1003,7 @@ msgstr ""
"імпортуютьÑÑ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ°Ð¼Ð¸ VPN NetworkManager.\n"
"\n"
-#: ../clients/cli/connections.c:1244
+#: ../clients/cli/connections.c:1245
#, c-format
msgid ""
"Usage: nmcli connection export { ARGUMENTS | help }\n"
@@ -1023,81 +1023,81 @@ msgstr ""
"Дані ÑпрÑмовуватимутьÑÑ Ð´Ð¾ Ñтандартного Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ до вказаного файла.\n"
"\n"
-#: ../clients/cli/connections.c:1335
+#: ../clients/cli/connections.c:1336
#, c-format
msgid "Error updating secrets for %s: %s\n"
msgstr "Помилка під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð¸ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ %s: %s\n"
-#: ../clients/cli/connections.c:1386
+#: ../clients/cli/connections.c:1387
msgid "Connection profile details"
msgstr "Параметри профілю з'єднаннÑ"
-#: ../clients/cli/connections.c:1403 ../clients/cli/connections.c:1513
+#: ../clients/cli/connections.c:1404 ../clients/cli/connections.c:1514
#, c-format
msgid "Error: 'connection show': %s"
msgstr "Помилка: «connection show»: %s"
-#: ../clients/cli/connections.c:1496
+#: ../clients/cli/connections.c:1497
msgid "Activate connection details"
msgstr "Ðктивувати параметри з'єднаннÑ"
-#: ../clients/cli/connections.c:1625 ../clients/cli/devices.c:1599
+#: ../clients/cli/connections.c:1626 ../clients/cli/devices.c:1599
#: ../clients/cli/devices.c:1616 ../clients/cli/devices.c:1634
#: ../clients/cli/devices.c:1653 ../clients/cli/devices.c:1720
#: ../clients/cli/devices.c:1849
msgid "NAME"
msgstr "ÐÐЗВÐ"
-#: ../clients/cli/connections.c:1725
+#: ../clients/cli/connections.c:1726
#, c-format
msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s"
msgstr "некоректне поле «%s»; дозволені полÑ: %s Ñ– %s або %s,%s"
-#: ../clients/cli/connections.c:1742 ../clients/cli/connections.c:1753
+#: ../clients/cli/connections.c:1743 ../clients/cli/connections.c:1754
#, c-format
msgid "'%s' has to be alone"
msgstr "«%s» має бути єдиним"
-#: ../clients/cli/connections.c:2007
+#: ../clients/cli/connections.c:2008
#, c-format
msgid "incorrect string '%s' of '--order' option"
msgstr "помилковий Ñ€Ñдок «%s» у параметрі «--order»"
-#: ../clients/cli/connections.c:2031
+#: ../clients/cli/connections.c:2032
#, c-format
msgid "incorrect item '%s' in '--order' option"
msgstr "помилковий пункт «%s» у параметрі «--order»"
-#: ../clients/cli/connections.c:2071
+#: ../clients/cli/connections.c:2072
msgid "No connection specified"
msgstr "Ðе вказано з'єднаннÑ"
-#: ../clients/cli/connections.c:2084
+#: ../clients/cli/connections.c:2085
#, c-format
msgid "%s argument is missing"
msgstr "пропущено аргумент %s"
-#: ../clients/cli/connections.c:2105
+#: ../clients/cli/connections.c:2106
#, c-format
msgid "unknown connection '%s'"
msgstr "невідоме з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»"
-#: ../clients/cli/connections.c:2134
+#: ../clients/cli/connections.c:2135
msgid "'--order' argument is missing"
msgstr "пропущено аргумент «--order»"
-#: ../clients/cli/connections.c:2198
+#: ../clients/cli/connections.c:2199
msgid "NetworkManager active profiles"
msgstr "Ðктивні профілі NetworkManager"
-#: ../clients/cli/connections.c:2199
+#: ../clients/cli/connections.c:2200
msgid "NetworkManager connection profiles"
msgstr "Профілі з'єднань NetworkManager"
-#: ../clients/cli/connections.c:2255 ../clients/cli/connections.c:2966
-#: ../clients/cli/connections.c:2978 ../clients/cli/connections.c:2990
-#: ../clients/cli/connections.c:3226 ../clients/cli/connections.c:9293
-#: ../clients/cli/connections.c:9315 ../clients/cli/devices.c:3285
+#: ../clients/cli/connections.c:2256 ../clients/cli/connections.c:2967
+#: ../clients/cli/connections.c:2979 ../clients/cli/connections.c:2991
+#: ../clients/cli/connections.c:3227 ../clients/cli/connections.c:9295
+#: ../clients/cli/connections.c:9317 ../clients/cli/devices.c:3285
#: ../clients/cli/devices.c:3298 ../clients/cli/devices.c:3310
#: ../clients/cli/devices.c:3614 ../clients/cli/devices.c:3625
#: ../clients/cli/devices.c:3644 ../clients/cli/devices.c:3653
@@ -1112,14 +1112,14 @@ msgstr "Профілі з'єднань NetworkManager"
msgid "Error: %s argument is missing."
msgstr "Помилка: пропущено аргумент %s."
-#: ../clients/cli/connections.c:2290
+#: ../clients/cli/connections.c:2291
#, c-format
msgid "Error: %s - no such connection profile."
msgstr "Помилка: профілю з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %s не Ñ–Ñнує."
-#: ../clients/cli/connections.c:2382 ../clients/cli/connections.c:2952
-#: ../clients/cli/connections.c:3026 ../clients/cli/connections.c:8827
-#: ../clients/cli/connections.c:8917 ../clients/cli/connections.c:9422
+#: ../clients/cli/connections.c:2383 ../clients/cli/connections.c:2953
+#: ../clients/cli/connections.c:3027 ../clients/cli/connections.c:8829
+#: ../clients/cli/connections.c:8919 ../clients/cli/connections.c:9424
#: ../clients/cli/devices.c:1949 ../clients/cli/devices.c:2219
#: ../clients/cli/devices.c:2392 ../clients/cli/devices.c:2516
#: ../clients/cli/devices.c:2703 ../clients/cli/devices.c:3485
@@ -1129,76 +1129,76 @@ msgstr "Помилка: профілю з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %s не Ñ–Ñнує."
msgid "Error: %s."
msgstr "Помилка: %s."
-#: ../clients/cli/connections.c:2474 ../clients/cli/devices.c:4674
+#: ../clients/cli/connections.c:2475 ../clients/cli/devices.c:4674
#, c-format
msgid "no active connection on device '%s'"
msgstr "на приÑтрої «%s» немає активних з'єднань"
-#: ../clients/cli/connections.c:2482
+#: ../clients/cli/connections.c:2483
msgid "no active connection or device"
msgstr "немає активних з'єднань або приÑтроїв"
-#: ../clients/cli/connections.c:2503
+#: ../clients/cli/connections.c:2504
#, c-format
msgid "device '%s' not compatible with connection '%s': "
msgstr "приÑтрій «%s» неÑуміÑний зі з'єднаннÑм «%s»: "
-#: ../clients/cli/connections.c:2540
+#: ../clients/cli/connections.c:2541
#, c-format
msgid "device '%s' not compatible with connection '%s'"
msgstr "приÑтрій «%s» неÑуміÑний зі з'єднаннÑм «%s»"
-#: ../clients/cli/connections.c:2547
+#: ../clients/cli/connections.c:2548
#, c-format
msgid "no device found for connection '%s'"
msgstr "не виÑвлено приÑтрою Ð´Ð»Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»"
-#: ../clients/cli/connections.c:2598
+#: ../clients/cli/connections.c:2599
#, c-format
msgid "Hint: use '%s' to get more details."
msgstr "Підказка: ÑкориÑтайтеÑÑ Â«%s», щоб ознайомитиÑÑ Ñ–Ð· подробицÑми."
-#: ../clients/cli/connections.c:2616
+#: ../clients/cli/connections.c:2617
#, c-format
msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ ÑƒÑпішно задіÑно (%s) (активний шлÑÑ… D-Bus: %s)\n"
-#: ../clients/cli/connections.c:2620 ../clients/cli/connections.c:2771
-#: ../clients/cli/connections.c:7109
+#: ../clients/cli/connections.c:2621 ../clients/cli/connections.c:2772
+#: ../clients/cli/connections.c:7111
#, c-format
msgid "Connection successfully activated (D-Bus active path: %s)\n"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ ÑƒÑпішно задіÑно (активний шлÑÑ… D-Bus: %s)\n"
-#: ../clients/cli/connections.c:2627 ../clients/cli/connections.c:2750
+#: ../clients/cli/connections.c:2628 ../clients/cli/connections.c:2751
#, c-format
msgid "Error: Connection activation failed: %s"
msgstr "Помилка: не вдалоÑÑ Ð°ÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ñ‚Ð¸ з'єднаннÑ: %s"
-#: ../clients/cli/connections.c:2663
+#: ../clients/cli/connections.c:2664
#, c-format
msgid "Error: Timeout expired (%d seconds)"
msgstr "Помилка: перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ (%d Ñекунд)."
-#: ../clients/cli/connections.c:2846
+#: ../clients/cli/connections.c:2847
#, c-format
msgid "unknown device '%s'."
msgstr "невідомий приÑтрій, «%s»."
-#: ../clients/cli/connections.c:2854
+#: ../clients/cli/connections.c:2855
msgid "neither a valid connection nor device given"
msgstr "не вказано ні коректного з'єднаннÑ, ні приÑтрою"
-#: ../clients/cli/connections.c:2869
+#: ../clients/cli/connections.c:2870
#, c-format
msgid "invalid passwd-file '%s' at line %zd: %s"
msgstr "некоректний файл passwd «%s» у Ñ€Ñдку %zd: %s"
-#: ../clients/cli/connections.c:2877
+#: ../clients/cli/connections.c:2878
#, c-format
msgid "invalid passwd-file '%s': %s"
msgstr "некоректний файл passwd «%s»: %s"
-#: ../clients/cli/connections.c:3000 ../clients/cli/connections.c:9326
+#: ../clients/cli/connections.c:3001 ../clients/cli/connections.c:9328
#: ../clients/cli/devices.c:1906 ../clients/cli/devices.c:1955
#: ../clients/cli/devices.c:2398 ../clients/cli/devices.c:3345
#: ../clients/cli/devices.c:3723 ../clients/cli/devices.c:4343
@@ -1208,162 +1208,157 @@ msgstr "некоректний файл passwd «%s»: %s"
msgid "Error: invalid extra argument '%s'."
msgstr "Помилка: некоректний додатковий аргумент, «%s»."
-#: ../clients/cli/connections.c:3034
+#: ../clients/cli/connections.c:3035
msgid "preparing"
msgstr "приготуваннÑ"
-#: ../clients/cli/connections.c:3142
+#: ../clients/cli/connections.c:3143
#, c-format
msgid "Connection '%s' (%s) successfully deleted.\n"
msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s) уÑпішно вилучено.\n"
-#: ../clients/cli/connections.c:3158
+#: ../clients/cli/connections.c:3159
#, c-format
msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» уÑпішно вимкнено (активний шлÑÑ… D-Bus: %s)\n"
-#: ../clients/cli/connections.c:3207 ../clients/cli/connections.c:9013
-#: ../clients/cli/connections.c:9045 ../clients/cli/connections.c:9220
+#: ../clients/cli/connections.c:3208 ../clients/cli/connections.c:9015
+#: ../clients/cli/connections.c:9047 ../clients/cli/connections.c:9222
#, c-format
msgid "Error: No connection specified."
msgstr "Помилка: не вказано з'єднаннÑ."
-#: ../clients/cli/connections.c:3239
+#: ../clients/cli/connections.c:3240
#, c-format
msgid "Error: '%s' is not an active connection.\n"
msgstr "Помилка: «%s» не Ñ” активним з'єднаннÑм.\n"
-#: ../clients/cli/connections.c:3240
+#: ../clients/cli/connections.c:3241
#, c-format
msgid "Error: not all active connections found."
msgstr "Помилка: не уÑÑ– активні з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾."
-#: ../clients/cli/connections.c:3248
+#: ../clients/cli/connections.c:3249
#, c-format
msgid "Error: no active connection provided."
msgstr "Помилка: не надано активного з'єднаннÑ."
-#: ../clients/cli/connections.c:3280
+#: ../clients/cli/connections.c:3281
#, c-format
msgid "Connection '%s' deactivation failed: %s\n"
msgstr "Ðевдала Ñпроба вимкнути з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»: %s\n"
-#: ../clients/cli/connections.c:3542 ../clients/cli/connections.c:3600
+#: ../clients/cli/connections.c:3543 ../clients/cli/connections.c:3601
#: ../clients/common/nm-client-utils.c:224
#, c-format
msgid "'%s' not among [%s]"
msgstr "«%s» немає Ñеред [%s]"
#. We should not really come here
-#: ../clients/cli/connections.c:3562 ../clients/cli/connections.c:3621
+#: ../clients/cli/connections.c:3563 ../clients/cli/connections.c:3622
#: ../clients/common/nm-client-utils.c:328
#, c-format
msgid "Unknown error"
msgstr "Ðевідома помилка"
-#: ../clients/cli/connections.c:3754
+#: ../clients/cli/connections.c:3755
#, c-format
msgid "Warning: master='%s' doesn't refer to any existing profile.\n"
msgstr ""
"ПопередженнÑ: master='%s' не поÑилаєтьÑÑ Ð½Ñ– на один з наÑвних профілів.\n"
-#: ../clients/cli/connections.c:4129
+#: ../clients/cli/connections.c:4130
#, c-format
msgid "Error: invalid property '%s': %s."
msgstr "Помилка: некоректна влаÑтивіÑÑ‚ÑŒ, «%s»: %s."
-#: ../clients/cli/connections.c:4146
+#: ../clients/cli/connections.c:4147
#, c-format
msgid "Error: failed to %s %s.%s: %s."
msgstr "Помилка: не вдалоÑÑ %s %s.%s: %s."
-#: ../clients/cli/connections.c:4199
+#: ../clients/cli/connections.c:4200
#, c-format
msgid "Error: '%s' is mandatory."
msgstr "Помилка: «%s» Ñ” обов'Ñзковим."
-#: ../clients/cli/connections.c:4232
+#: ../clients/cli/connections.c:4233
#, c-format
msgid "Error: invalid slave type; %s."
msgstr "Помилка: некоректний тип підлеглого; %s."
-#: ../clients/cli/connections.c:4243
+#: ../clients/cli/connections.c:4244
#, c-format
msgid "Error: invalid connection type; %s."
msgstr "Помилка: некоректний тип з'єднаннÑ; %s."
-#: ../clients/cli/connections.c:4334
+#: ../clients/cli/connections.c:4335
#, c-format
msgid "Error: bad connection type: %s"
msgstr "Помилка: помилковий тип з'єднаннÑ: %s"
-#: ../clients/cli/connections.c:4419
+#: ../clients/cli/connections.c:4420
msgid "Error: master is required"
msgstr "Помилка: Ñлід вказати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «master»"
-#: ../clients/cli/connections.c:4520
+#: ../clients/cli/connections.c:4521
#, c-format
msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n"
msgstr ""
"Помилка: «%s» не Ñ” коректним режимом ÑпоÑтереженнÑ; ÑкориÑтайтеÑÑ Â«%s» або "
"«%s».\n"
-#: ../clients/cli/connections.c:4561
+#: ../clients/cli/connections.c:4562
#, c-format
msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]."
msgstr ""
"Помилка: «bt-type»: «%s» Ñ” некоректним; ÑкориÑтайтеÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñм з переліку "
"[%s, %s, %s (%s), %s]."
-#: ../clients/cli/connections.c:4908
+#: ../clients/cli/connections.c:4909
#, c-format
msgid "Error: setting '%s' is mandatory and cannot be removed."
msgstr "Помилка: параметр «%s» Ñ” обов'Ñзковим, його не можна вилучати."
-#: ../clients/cli/connections.c:4924
+#: ../clients/cli/connections.c:4925
#, c-format
msgid "Error: value for '%s' is missing."
msgstr "Помилка: не вказано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»."
-#: ../clients/cli/connections.c:4971
+#: ../clients/cli/connections.c:4976
msgid "Error: <setting>.<property> argument is missing."
msgstr "Помилка: пропущено аргумент <параметр>.<влаÑтивіÑÑ‚ÑŒ>."
-#: ../clients/cli/connections.c:5013
+#: ../clients/cli/connections.c:5018
msgid "Error: missing setting."
msgstr "Помилка: пропущено параметр."
-#: ../clients/cli/connections.c:5027
-#, c-format
-msgid "Setting '%s' is not present in the connection."
-msgstr "У з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” параметра «%s»."
-
-#: ../clients/cli/connections.c:5033
+#: ../clients/cli/connections.c:5032
#, c-format
msgid "Error: invalid setting argument '%s'."
msgstr "Помилка: некоректний аргумент параметра, «%s»."
-#: ../clients/cli/connections.c:5059
+#: ../clients/cli/connections.c:5063
#, c-format
msgid "Error: invalid or not allowed setting '%s': %s."
msgstr "Помилка: некоректний або заборонений параметр, «%s»: %s."
-#: ../clients/cli/connections.c:5120 ../clients/cli/connections.c:5141
+#: ../clients/cli/connections.c:5122 ../clients/cli/connections.c:5143
#, c-format
msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)."
msgstr "Помилка: «%s» є неоднозначним (%s.%s або %s.%s)."
-#: ../clients/cli/connections.c:5165
+#: ../clients/cli/connections.c:5167
#, c-format
msgid "Error: invalid <setting>.<property> '%s'."
msgstr "Помилка: некоректний аргумент <параметр>.<влаÑтивіÑÑ‚ÑŒ>, «%s»."
-#: ../clients/cli/connections.c:5202 ../clients/cli/connections.c:8865
+#: ../clients/cli/connections.c:5204 ../clients/cli/connections.c:8867
#, c-format
msgid "Error: Failed to add '%s' connection: %s"
msgstr "Помилка: не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»: %s"
-#: ../clients/cli/connections.c:5221
+#: ../clients/cli/connections.c:5223
#, c-format
msgid ""
"Warning: There is another connection with the name '%1$s'. Reference the "
@@ -1384,32 +1379,32 @@ msgstr[3] ""
"ПопередженнÑ: Ñ–Ñнує інше з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· назвою «%1$s». ПоÑилайтеÑÑ Ð½Ð° з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ "
"за його UUID, «%2$s»\n"
-#: ../clients/cli/connections.c:5232
+#: ../clients/cli/connections.c:5234
#, c-format
msgid "Connection '%s' (%s) successfully added.\n"
msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s) уÑпішно додано.\n"
-#: ../clients/cli/connections.c:5289 ../clients/cli/connections.c:7216
-#: ../clients/cli/connections.c:7217 ../clients/cli/devices.c:577
+#: ../clients/cli/connections.c:5291 ../clients/cli/connections.c:7218
+#: ../clients/cli/connections.c:7219 ../clients/cli/devices.c:577
#: ../clients/cli/devices.c:583 ../clients/cli/devices.c:1346
#: ../clients/cli/general.c:92 ../clients/cli/utils.h:311
#: ../clients/common/nm-client-utils.c:317
#: ../clients/common/nm-meta-setting-desc.c:877
-#: ../clients/common/nm-meta-setting-desc.c:2733
+#: ../clients/common/nm-meta-setting-desc.c:2736
msgid "no"
msgstr "ні"
-#: ../clients/cli/connections.c:5290 ../clients/cli/connections.c:7216
-#: ../clients/cli/connections.c:7217 ../clients/cli/devices.c:577
+#: ../clients/cli/connections.c:5292 ../clients/cli/connections.c:7218
+#: ../clients/cli/connections.c:7219 ../clients/cli/devices.c:577
#: ../clients/cli/devices.c:583 ../clients/cli/devices.c:1346
#: ../clients/cli/general.c:91 ../clients/cli/utils.h:311
#: ../clients/common/nm-client-utils.c:316
#: ../clients/common/nm-meta-setting-desc.c:877
-#: ../clients/common/nm-meta-setting-desc.c:2730
+#: ../clients/common/nm-meta-setting-desc.c:2733
msgid "yes"
msgstr "так"
-#: ../clients/cli/connections.c:5376
+#: ../clients/cli/connections.c:5378
#, c-format
msgid ""
"You can specify this option more than once. Press <Enter> when you're done.\n"
@@ -1418,7 +1413,7 @@ msgstr ""
"завершите.\n"
#. Ask for optional arguments.
-#: ../clients/cli/connections.c:5476
+#: ../clients/cli/connections.c:5478
#, c-format
msgid "There is %d optional setting for %s.\n"
msgid_plural "There are %d optional settings for %s.\n"
@@ -1427,7 +1422,7 @@ msgstr[1] "Ð”Ð»Ñ Â«%2$s» передбачено %1$d додатковий па
msgstr[2] "Ð”Ð»Ñ Ð·'єднань типу «%2$s» передбачено %1$d додаткових аргументів.\n"
msgstr[3] "Ð”Ð»Ñ Ð·'єднань типу «%2$s» передбачено %1$d додатковий аргумент.\n"
-#: ../clients/cli/connections.c:5483
+#: ../clients/cli/connections.c:5485
#, c-format
msgid "Do you want to provide it? %s"
msgid_plural "Do you want to provide them? %s"
@@ -1436,22 +1431,22 @@ msgstr[1] "Хочете вказати їх? %s"
msgstr[2] "Хочете вказати їх? %s"
msgstr[3] "Хочете вказати його? %s"
-#: ../clients/cli/connections.c:5610 ../clients/cli/utils.c:280
+#: ../clients/cli/connections.c:5612 ../clients/cli/utils.c:280
#, c-format
msgid "Error: value for '%s' argument is required."
msgstr "Помилка: Ñлід вказати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» аргументу."
-#: ../clients/cli/connections.c:5617
+#: ../clients/cli/connections.c:5619
#, c-format
msgid "Error: 'save': %s."
msgstr "Помилка: «save»: %s."
-#: ../clients/cli/connections.c:5702 ../clients/cli/connections.c:5715
+#: ../clients/cli/connections.c:5704 ../clients/cli/connections.c:5717
#, c-format
msgid "Error: '%s' argument is required."
msgstr "Помилка: Ñлід вказати параметр «%s»."
-#: ../clients/cli/connections.c:6666
+#: ../clients/cli/connections.c:6668
#, c-format
msgid "['%s' setting values]\n"
msgstr "['%s' Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°]\n"
@@ -1459,7 +1454,7 @@ msgstr "['%s' Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°]\n"
#. TRANSLATORS: do not translate command names and keywords before ::
#. * However, you should translate terms enclosed in <>.
#.
-#: ../clients/cli/connections.c:6774
+#: ../clients/cli/connections.c:6776
#, c-format
msgid ""
"---[ Main menu ]---\n"
@@ -1493,7 +1488,7 @@ msgstr ""
"nmcli <параметр-налашт.> <знач.> :: Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ nmcli\n"
"quit :: завершити роботу nmcli\n"
-#: ../clients/cli/connections.c:6801
+#: ../clients/cli/connections.c:6803
#, c-format
msgid ""
"goto <setting>[.<prop>] | <prop> :: enter setting/property for editing\n"
@@ -1514,7 +1509,7 @@ msgstr ""
" nmcli connection> goto secondaries\n"
" nmcli> goto ipv4.addresses\n"
-#: ../clients/cli/connections.c:6809
+#: ../clients/cli/connections.c:6811
#, c-format
msgid ""
"remove <setting>[.<prop>] :: remove setting or reset property value\n"
@@ -1536,7 +1531,7 @@ msgstr ""
"Приклади: nmcli> remove wifi-sec\n"
" nmcli> remove eth.mtu\n"
-#: ../clients/cli/connections.c:6816
+#: ../clients/cli/connections.c:6818
#, c-format
msgid ""
"set [<setting>.<prop> <value>] :: set property value\n"
@@ -1552,7 +1547,7 @@ msgstr ""
"\n"
"Приклад: nmcli> s con.id My connection\n"
-#: ../clients/cli/connections.c:6821
+#: ../clients/cli/connections.c:6823
#, c-format
msgid ""
"describe [<setting>.<prop>] :: describe property\n"
@@ -1565,7 +1560,7 @@ msgstr ""
"Показує Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–. СпиÑок уÑÑ–Ñ… параметрів Ñ– влаÑтивоÑтей NM можна "
"знайти на Ñторінці довідника (man) nm-settings(5).\n"
-#: ../clients/cli/connections.c:6826
+#: ../clients/cli/connections.c:6828
#, c-format
msgid ""
"print [all] :: print setting or connection values\n"
@@ -1580,7 +1575,7 @@ msgstr ""
"\n"
"Приклад: nmcli ipv4> print all\n"
-#: ../clients/cli/connections.c:6832
+#: ../clients/cli/connections.c:6834
#, c-format
msgid ""
"verify [all | fix] :: verify setting or connection validity\n"
@@ -1605,7 +1600,7 @@ msgstr ""
" nmcli> verify fix\n"
" nmcli bond> verify\n"
-#: ../clients/cli/connections.c:6842
+#: ../clients/cli/connections.c:6844
#, c-format
msgid ""
"save [persistent|temporary] :: save the connection\n"
@@ -1632,7 +1627,7 @@ msgstr ""
"потрібно\n"
"повніÑÑ‚ÑŽ вилучити поÑтійне з'єднаннÑ, вам доведетьÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ його профіль.\n"
-#: ../clients/cli/connections.c:6853
+#: ../clients/cli/connections.c:6855
#, c-format
msgid ""
"activate [<ifname>] [/<ap>|<nsp>] :: activate the connection\n"
@@ -1653,7 +1648,7 @@ msgstr ""
"/<ap>|<nsp> - AP (Wi-Fi) або NSP (WiMAX) (додайте на початку «/», Ñкщо не "
"вказано <інтерфейÑ>)\n"
-#: ../clients/cli/connections.c:6861 ../clients/cli/connections.c:7020
+#: ../clients/cli/connections.c:6863 ../clients/cli/connections.c:7022
#, c-format
msgid ""
"back :: go to upper menu level\n"
@@ -1662,7 +1657,7 @@ msgstr ""
"back :: піднÑтиÑÑ Ñƒ меню на один рівень\n"
"\n"
-#: ../clients/cli/connections.c:6864
+#: ../clients/cli/connections.c:6866
#, c-format
msgid ""
"help/? [<command>] :: help for the nmcli commands\n"
@@ -1671,7 +1666,7 @@ msgstr ""
"help/? [<команда>] :: довідка з команди nmcli\n"
"\n"
-#: ../clients/cli/connections.c:6867
+#: ../clients/cli/connections.c:6869
#, c-format
msgid ""
"nmcli [<conf-option> <value>] :: nmcli configuration\n"
@@ -1698,7 +1693,7 @@ msgstr ""
" nmcli> nmcli save-confirmation no\n"
" nmcli> nmcli prompt-color 3\n"
-#: ../clients/cli/connections.c:6889 ../clients/cli/connections.c:7026
+#: ../clients/cli/connections.c:6891 ../clients/cli/connections.c:7028
#, c-format
msgid ""
"quit :: exit nmcli\n"
@@ -1712,8 +1707,8 @@ msgstr ""
"Ð·Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ було збережено, кориÑтувачеві буде запропоновано "
"підтвердити дію з виходу з програми.\n"
-#: ../clients/cli/connections.c:6894 ../clients/cli/connections.c:7031
-#: ../clients/cli/connections.c:7418 ../clients/cli/connections.c:8438
+#: ../clients/cli/connections.c:6896 ../clients/cli/connections.c:7033
+#: ../clients/cli/connections.c:7420 ../clients/cli/connections.c:8440
#, c-format
msgid "Unknown command: '%s'\n"
msgstr "Ðевідома команда «%s».\n"
@@ -1721,7 +1716,7 @@ msgstr "Ðевідома команда «%s».\n"
#. TRANSLATORS: do not translate command names and keywords before ::
#. * However, you should translate terms enclosed in <>.
#.
-#: ../clients/cli/connections.c:6959
+#: ../clients/cli/connections.c:6961
#, c-format
msgid ""
"---[ Property menu ]---\n"
@@ -1748,7 +1743,7 @@ msgstr ""
"help/? [<команда>] :: вивеÑти цю довідку або Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸\n"
"quit :: вийти з nmcli\n"
-#: ../clients/cli/connections.c:6983
+#: ../clients/cli/connections.c:6985
#, c-format
msgid ""
"set [<value>] :: set new value\n"
@@ -1760,7 +1755,7 @@ msgstr ""
"За допомогою цієї команди можна змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– на вказане "
"<значеннÑ>\n"
-#: ../clients/cli/connections.c:6987
+#: ../clients/cli/connections.c:6989
#, c-format
msgid ""
"add [<value>] :: append new value to the property\n"
@@ -1775,7 +1770,7 @@ msgstr ""
"Ñкщо влаÑтивіÑÑ‚ÑŒ належить до типу контейнерів. Якщо влаÑтивіÑÑ‚ÑŒ ÑкладаєтьÑÑ "
"лише з одного значеннÑ, це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ замінено (те Ñаме, що Ñ– «set»).\n"
-#: ../clients/cli/connections.c:6993
+#: ../clients/cli/connections.c:6995
#, c-format
msgid ""
"change :: change current value\n"
@@ -1786,7 +1781,7 @@ msgstr ""
"\n"
"Показує поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ– надає змогу його редагувати.\n"
-#: ../clients/cli/connections.c:6998
+#: ../clients/cli/connections.c:7000
#, c-format
msgid ""
"remove [<value>|<index>|<option name>] :: delete the value\n"
@@ -1819,7 +1814,7 @@ msgstr ""
" nmcli bond.options> remove downdelay\n"
"\n"
-#: ../clients/cli/connections.c:7009
+#: ../clients/cli/connections.c:7011
#, c-format
msgid ""
"describe :: describe property\n"
@@ -1832,7 +1827,7 @@ msgstr ""
"Показує Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–. СпиÑок уÑÑ–Ñ… параметрів Ñ– влаÑтивоÑтей NM можна "
"знайти на Ñторінці довідника (man) nm-settings(5).\n"
-#: ../clients/cli/connections.c:7014
+#: ../clients/cli/connections.c:7016
#, c-format
msgid ""
"print [property|setting|connection] :: print property (setting, connection) "
@@ -1847,7 +1842,7 @@ msgstr ""
"Виводить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–. За допомогою аргументу команди ви можете "
"виводити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑƒÑього параметра або уÑього запиÑу з'єднаннÑ.\n"
-#: ../clients/cli/connections.c:7023
+#: ../clients/cli/connections.c:7025
#, c-format
msgid ""
"help/? [<command>] :: help for nmcli commands\n"
@@ -1856,24 +1851,24 @@ msgstr ""
"help/? [<команда>] :: довідка з команди nmcli\n"
"\n"
-#: ../clients/cli/connections.c:7115
+#: ../clients/cli/connections.c:7117
#, c-format
msgid "Error: Connection activation failed.\n"
msgstr "Помилка: невдала Ñпроба активації з'єднаннÑ.\n"
#. TRANSLATORS: status line in nmcli connection editor
-#: ../clients/cli/connections.c:7212
+#: ../clients/cli/connections.c:7214
#, c-format
msgid "[ Type: %s | Name: %s | UUID: %s | Dirty: %s | Temp: %s ]\n"
msgstr "[ Тип: %s | Ðазва: %s | UUID: %s | Ðе збережено: %s | Тимч.: %s ]\n"
-#: ../clients/cli/connections.c:7250
+#: ../clients/cli/connections.c:7252
#, c-format
msgid "The connection is not saved. Do you really want to quit? %s"
msgstr ""
"З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ збережено. Ви Ñправді хочете завершити роботу програми? %s"
-#: ../clients/cli/connections.c:7294
+#: ../clients/cli/connections.c:7296
#, c-format
msgid ""
"The connection profile has been removed from another client. You may type "
@@ -1882,60 +1877,60 @@ msgstr ""
"Профіль з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ вилучено з іншого клієнта. Ви можете ввеÑти «save» у "
"головному меню, щоб відновити його.\n"
-#: ../clients/cli/connections.c:7326 ../clients/cli/connections.c:7714
-#: ../clients/cli/connections.c:7784
+#: ../clients/cli/connections.c:7328 ../clients/cli/connections.c:7716
+#: ../clients/cli/connections.c:7786
#, c-format
msgid "Allowed values for '%s' property: %s\n"
msgstr "Можливі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «%s»: %s\n"
-#: ../clients/cli/connections.c:7328 ../clients/cli/connections.c:7717
-#: ../clients/cli/connections.c:7786
+#: ../clients/cli/connections.c:7330 ../clients/cli/connections.c:7719
+#: ../clients/cli/connections.c:7788
#, c-format
msgid "Enter '%s' value: "
msgstr "Введіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»: "
-#: ../clients/cli/connections.c:7341 ../clients/cli/connections.c:7358
-#: ../clients/cli/connections.c:7725 ../clients/cli/connections.c:7797
+#: ../clients/cli/connections.c:7343 ../clients/cli/connections.c:7360
+#: ../clients/cli/connections.c:7727 ../clients/cli/connections.c:7799
#, c-format
msgid "Error: failed to set '%s' property: %s\n"
msgstr "Помилка: не вдалоÑÑ Ð²Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «%s»: %s\n"
-#: ../clients/cli/connections.c:7350
+#: ../clients/cli/connections.c:7352
#, c-format
msgid "Edit '%s' value: "
msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»: "
-#: ../clients/cli/connections.c:7371 ../clients/cli/settings.c:440
+#: ../clients/cli/connections.c:7373 ../clients/cli/settings.c:440
#, c-format
msgid "Error: %s\n"
msgstr "Помилка: %s\n"
-#: ../clients/cli/connections.c:7390
+#: ../clients/cli/connections.c:7392
#, c-format
msgid "Unknown command argument: '%s'\n"
msgstr "Ðевідомий аргумент команди: «%s»\n"
-#: ../clients/cli/connections.c:7485
+#: ../clients/cli/connections.c:7487
#, c-format
msgid "Available settings: %s\n"
msgstr "ДоÑтупні параметри: %s\n"
-#: ../clients/cli/connections.c:7496
+#: ../clients/cli/connections.c:7498
#, c-format
msgid "Error: invalid setting name; %s\n"
msgstr "Помилка: некоректна назва параметра; %s\n"
-#: ../clients/cli/connections.c:7513
+#: ../clients/cli/connections.c:7515
#, c-format
msgid "Available properties: %s\n"
msgstr "ДоÑтупні влаÑтивоÑÑ‚Ñ–: %s\n"
-#: ../clients/cli/connections.c:7521
+#: ../clients/cli/connections.c:7523
#, c-format
msgid "Error: property %s\n"
msgstr "Помилка: влаÑтивіÑÑ‚ÑŒ %s\n"
-#: ../clients/cli/connections.c:7563
+#: ../clients/cli/connections.c:7565
#, c-format
msgid ""
"Saving the connection with 'autoconnect=yes'. That might result in an "
@@ -1946,12 +1941,12 @@ msgstr ""
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° може призвеÑти до негайного задіÑÐ½Ð½Ñ Ð·'єднаннÑ.\n"
"Хочете зберегти запиÑ? %s"
-#: ../clients/cli/connections.c:7649
+#: ../clients/cli/connections.c:7651
#, c-format
msgid "You may edit the following settings: %s\n"
msgstr "Можна редагувати такі параметри: %s\n"
-#: ../clients/cli/connections.c:7677
+#: ../clients/cli/connections.c:7679
#, c-format
msgid ""
"The connection profile has been removed from another client. You may type "
@@ -1960,234 +1955,234 @@ msgstr ""
"Профіль з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ вилучено з іншого клієнта. Ви можете ввеÑти «save», "
"щоб відновити його.\n"
-#: ../clients/cli/connections.c:7731 ../clients/cli/connections.c:8012
-#: ../clients/cli/connections.c:8045
+#: ../clients/cli/connections.c:7733 ../clients/cli/connections.c:8014
+#: ../clients/cli/connections.c:8047
#, c-format
msgid "Error: no setting selected; valid are [%s]\n"
msgstr ""
"Помилка: не вибрано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°; коректними значеннÑми Ñ” такі: [%s]\n"
-#: ../clients/cli/connections.c:7732
+#: ../clients/cli/connections.c:7734
#, c-format
msgid "use 'goto <setting>' first, or 'set <setting>.<property>'\n"
msgstr ""
"Ñпочатку ÑкориÑтайтеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ «goto <параметр>» або командою «set "
"<параметр>.<влаÑтивіÑÑ‚ÑŒ>»\n"
-#: ../clients/cli/connections.c:7752 ../clients/cli/connections.c:7929
-#: ../clients/cli/connections.c:8034
+#: ../clients/cli/connections.c:7754 ../clients/cli/connections.c:7931
+#: ../clients/cli/connections.c:8036
#, c-format
msgid "Error: invalid setting argument '%s'; valid are [%s]\n"
msgstr ""
"Помилка: некоректний аргумент параметра, «%s»; коректними Ñ” такі ПÐРÐМЕТРИ: "
"[%s]\n"
-#: ../clients/cli/connections.c:7762
+#: ../clients/cli/connections.c:7764
#, c-format
msgid "Error: missing setting for '%s' property\n"
msgstr "Помилка: не вказано параметра Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «%s»\n"
-#: ../clients/cli/connections.c:7769
+#: ../clients/cli/connections.c:7771
#, c-format
msgid "Error: invalid property: %s\n"
msgstr "Помилка: некоректна влаÑтивіÑÑ‚ÑŒ: %s\n"
-#: ../clients/cli/connections.c:7830
+#: ../clients/cli/connections.c:7832
#, c-format
msgid "Error: unknown setting '%s'\n"
msgstr "Помилка: невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»\n"
-#: ../clients/cli/connections.c:7856
+#: ../clients/cli/connections.c:7858
#, c-format
msgid "You may edit the following properties: %s\n"
msgstr "Можна редагувати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¸Ñ… влаÑтивоÑтей: %s\n"
-#: ../clients/cli/connections.c:7902 ../clients/cli/connections.c:7962
+#: ../clients/cli/connections.c:7904 ../clients/cli/connections.c:7964
#, c-format
msgid "Error: failed to remove value of '%s': %s\n"
msgstr "Помилка: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s»: %s\n"
-#: ../clients/cli/connections.c:7908
+#: ../clients/cli/connections.c:7910
#, c-format
msgid "Error: no argument given; valid are [%s]\n"
msgstr "Помилка: не вказано аргументу; коректними аргументами є такі: [%s]\n"
-#: ../clients/cli/connections.c:7927
+#: ../clients/cli/connections.c:7929
#, c-format
msgid "Setting '%s' is not present in the connection.\n"
msgstr "У з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” параметра «%s».\n"
-#: ../clients/cli/connections.c:7988
+#: ../clients/cli/connections.c:7990
#, c-format
msgid "Error: %s properties, nor it is a setting name.\n"
msgstr "Помилка: влаÑтивоÑÑ‚Ñ– %s Ñ– не Ñ” назвою параметра.\n"
-#: ../clients/cli/connections.c:8013 ../clients/cli/connections.c:8046
+#: ../clients/cli/connections.c:8015 ../clients/cli/connections.c:8048
#, c-format
msgid "use 'goto <setting>' first, or 'describe <setting>.<property>'\n"
msgstr ""
"ÑкориÑтайтеÑÑ Ñпочатку командою «goto <параметр> або командою «describe "
"<параметр>.<влаÑтивіÑÑ‚ÑŒ>»\n"
-#: ../clients/cli/connections.c:8069
+#: ../clients/cli/connections.c:8071
#, c-format
msgid "Error: invalid property: %s, neither a valid setting name.\n"
msgstr ""
"Помилка: некоректна влаÑтивіÑÑ‚ÑŒ: %s Ñ– не Ñ” коректною назвою параметра.\n"
-#: ../clients/cli/connections.c:8099
+#: ../clients/cli/connections.c:8101
#, c-format
msgid "Error: unknown setting: '%s'\n"
msgstr "Помилка: невідомий параметр: «%s»\n"
-#: ../clients/cli/connections.c:8104
+#: ../clients/cli/connections.c:8106
#, c-format
msgid "Error: '%s' setting not present in the connection\n"
msgstr "Помилка: у з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” параметра «%s».\n"
-#: ../clients/cli/connections.c:8136
+#: ../clients/cli/connections.c:8138
#, c-format
msgid "Error: invalid property: %s%s\n"
msgstr "Помилка: некоректна влаÑтивіÑÑ‚ÑŒ: %s%s\n"
-#: ../clients/cli/connections.c:8138
+#: ../clients/cli/connections.c:8140
msgid ", neither a valid setting name"
msgstr ", і не є коректною назвою параметра"
-#: ../clients/cli/connections.c:8154
+#: ../clients/cli/connections.c:8156
#, c-format
msgid "Invalid verify option: %s\n"
msgstr "Ðекоректний параметр verify: %s\n"
-#: ../clients/cli/connections.c:8162
+#: ../clients/cli/connections.c:8164
#, c-format
msgid "Verify setting '%s': %s\n"
msgstr "Перевірка параметра «%s»: %s\n"
-#: ../clients/cli/connections.c:8177
+#: ../clients/cli/connections.c:8179
#, c-format
msgid "Verify connection: %s\n"
msgstr "Перевірка з'єднаннÑ: %s\n"
-#: ../clients/cli/connections.c:8179
+#: ../clients/cli/connections.c:8181
#, c-format
msgid "The error cannot be fixed automatically.\n"
msgstr "Помилку не можна виправити у автоматичному режимі.\n"
-#: ../clients/cli/connections.c:8199
+#: ../clients/cli/connections.c:8201
#, c-format
msgid "Error: invalid argument '%s'\n"
msgstr "Помилка: некоректний аргумент «%s»\n"
-#: ../clients/cli/connections.c:8249
+#: ../clients/cli/connections.c:8251
#, c-format
msgid "Error: Failed to save '%s' (%s) connection: %s\n"
msgstr "Помилка: не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s): %s\n"
-#: ../clients/cli/connections.c:8255
+#: ../clients/cli/connections.c:8257
#, c-format
msgid "Error: Timeout saving '%s' (%s) connection\n"
msgstr ""
"Помилка: Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s)\n"
-#: ../clients/cli/connections.c:8259
+#: ../clients/cli/connections.c:8261
#, c-format
msgid "Connection '%s' (%s) successfully saved.\n"
msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s) уÑпішно збережено.\n"
-#: ../clients/cli/connections.c:8260
+#: ../clients/cli/connections.c:8262
#, c-format
msgid "Connection '%s' (%s) successfully updated.\n"
msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s) уÑпішно оновлено.\n"
-#: ../clients/cli/connections.c:8294
+#: ../clients/cli/connections.c:8296
#, c-format
msgid "Error: connection verification failed: %s\n"
msgstr "Помилка: з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ пройшло перевірки: %s\n"
-#: ../clients/cli/connections.c:8295
+#: ../clients/cli/connections.c:8297
msgid "(unknown error)"
msgstr "(невідома помилка)"
-#: ../clients/cli/connections.c:8296
+#: ../clients/cli/connections.c:8298
#, c-format
msgid "You may try running 'verify fix' to fix errors.\n"
msgstr "Ви можете Ñпробувати запуÑтити «verify fix» Ð´Ð»Ñ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº.\n"
#. TRANSLATORS: do not translate 'save', leave it as it is
-#: ../clients/cli/connections.c:8319
+#: ../clients/cli/connections.c:8321
#, c-format
msgid "Error: connection is not saved. Type 'save' first.\n"
msgstr "Помилка: з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ збережено. Спочатку введіть «save».\n"
-#: ../clients/cli/connections.c:8323
+#: ../clients/cli/connections.c:8325
#, c-format
msgid "Error: connection is not valid: %s\n"
msgstr "Помилка: некоректне з'єднаннÑ: %s\n"
-#: ../clients/cli/connections.c:8339
+#: ../clients/cli/connections.c:8341
#, c-format
msgid "Error: Cannot activate connection: %s.\n"
msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð´Ñ–Ñти з'єднаннÑ: %s.\n"
-#: ../clients/cli/connections.c:8348
+#: ../clients/cli/connections.c:8350
#, c-format
msgid "Error: Failed to activate '%s' (%s) connection: %s\n"
msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð´Ñ–Ñти з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s): %s\n"
-#: ../clients/cli/connections.c:8355
+#: ../clients/cli/connections.c:8357
msgid "Monitoring connection activation (press any key to continue)\n"
msgstr ""
"СпоÑтерігаємо за активацією з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ (натиÑніть будь-Ñку клавішу, щоб "
"продовжити)\n"
-#: ../clients/cli/connections.c:8390
+#: ../clients/cli/connections.c:8392
#, c-format
msgid "Error: status-line: %s\n"
msgstr "Помилка: Ñ€Ñдок Ñтану: %s\n"
-#: ../clients/cli/connections.c:8398
+#: ../clients/cli/connections.c:8400
#, c-format
msgid "Error: save-confirmation: %s\n"
msgstr "Помилка: save-confirmation: %s\n"
-#: ../clients/cli/connections.c:8406
+#: ../clients/cli/connections.c:8408
#, c-format
msgid "Error: show-secrets: %s\n"
msgstr "Помилка: show-secrets: %s\n"
-#: ../clients/cli/connections.c:8414
+#: ../clients/cli/connections.c:8416
#, c-format
msgid "Current nmcli configuration:\n"
msgstr "Поточне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ nmcli:\n"
-#: ../clients/cli/connections.c:8422
+#: ../clients/cli/connections.c:8424
#, c-format
msgid "Invalid configuration option '%s'; allowed [%s]\n"
msgstr ""
"Ðекоректний параметр налаштуваннÑ, «%s»; можна викориÑтовувати лише такі: "
"[%s]\n"
-#: ../clients/cli/connections.c:8653
+#: ../clients/cli/connections.c:8655
#, c-format
msgid "Error: only one of 'id', 'filename', uuid, or 'path' can be provided."
msgstr ""
"Помилка: можна вказувати лише один з параметрів «id», «filename», uuid або "
"«path»."
-#: ../clients/cli/connections.c:8668 ../clients/cli/connections.c:8835
+#: ../clients/cli/connections.c:8670 ../clients/cli/connections.c:8837
#, c-format
msgid "Error: Unknown connection '%s'."
msgstr "Помилка: невідоме з'єднаннÑ, «%s»."
-#: ../clients/cli/connections.c:8685
+#: ../clients/cli/connections.c:8687
#, c-format
msgid "Warning: editing existing connection '%s'; 'type' argument is ignored\n"
msgstr ""
"ПопередженнÑ: Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ Ñтвореного запиÑу з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»; аргумент "
"«type» проігноровано\n"
-#: ../clients/cli/connections.c:8689
+#: ../clients/cli/connections.c:8691
#, c-format
msgid ""
"Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"
@@ -2195,201 +2190,201 @@ msgstr ""
"ПопередженнÑ: Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ Ñтвореного запиÑу з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»; аргумент "
"«con-name» проігноровано\n"
-#: ../clients/cli/connections.c:8716
+#: ../clients/cli/connections.c:8718
#, c-format
msgid "Valid connection types: %s\n"
msgstr "Коректні типи з'єднань: %s\n"
-#: ../clients/cli/connections.c:8718
+#: ../clients/cli/connections.c:8720
#, c-format
msgid "Error: invalid connection type; %s\n"
msgstr "Помилка: некоректний тип з'єднаннÑ; %s\n"
-#: ../clients/cli/connections.c:8757
+#: ../clients/cli/connections.c:8759
#, c-format
msgid "===| nmcli interactive connection editor |==="
msgstr "===| Інтерактивний редактор з'єднань nmcli |==="
-#: ../clients/cli/connections.c:8760
+#: ../clients/cli/connections.c:8762
#, c-format
msgid "Editing existing '%s' connection: '%s'"
msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ñвного з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»: «%s»"
-#: ../clients/cli/connections.c:8762
+#: ../clients/cli/connections.c:8764
#, c-format
msgid "Adding a new '%s' connection"
msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»"
#. TRANSLATORS: do not translate 'help', leave it as it is
-#: ../clients/cli/connections.c:8765
+#: ../clients/cli/connections.c:8767
#, c-format
msgid "Type 'help' or '?' for available commands."
msgstr "Введіть «help» або «?», щоб ознайомитиÑÑ Ð·Ñ– ÑпиÑком доÑтупних команд."
#. TRANSLATORS: do not translate 'print', leave it as it is
-#: ../clients/cli/connections.c:8768
+#: ../clients/cli/connections.c:8770
#, c-format
msgid "Type 'print' to show all the connection properties."
msgstr "Введіть «print», щоб побачити уÑÑ– влаÑтивоÑÑ‚Ñ– з'єднаннÑ."
#. TRANSLATORS: do not translate 'describe', leave it as it is
-#: ../clients/cli/connections.c:8771
+#: ../clients/cli/connections.c:8773
#, c-format
msgid "Type 'describe [<setting>.<prop>]' for detailed property description."
msgstr ""
"Щоб ознайомитиÑÑ Ð· докладним опиÑом влаÑтивоÑÑ‚Ñ–, ÑкориÑтайтеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ "
"«describe [<параметр>.<влаÑтивіÑÑ‚ÑŒ>]."
-#: ../clients/cli/connections.c:8798
+#: ../clients/cli/connections.c:8800
#, c-format
msgid "Error: Failed to modify connection '%s': %s"
msgstr "Помилка: не вдалоÑÑ Ð²Ð½ÐµÑти зміни до запиÑу з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s»: %s"
-#: ../clients/cli/connections.c:8804
+#: ../clients/cli/connections.c:8806
#, c-format
msgid "Connection '%s' (%s) successfully modified.\n"
msgstr "Зміни до з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Â«%s» (%s) уÑпішно внеÑено.\n"
-#: ../clients/cli/connections.c:8870
+#: ../clients/cli/connections.c:8872
#, c-format
msgid "%s (%s) cloned as %s (%s).\n"
msgstr "%s (%s) клоновано Ñк %s (%s).\n"
-#: ../clients/cli/connections.c:8928
+#: ../clients/cli/connections.c:8930
msgid "New connection name: "
msgstr "Ðова назва з'єднаннÑ: "
-#: ../clients/cli/connections.c:8930
+#: ../clients/cli/connections.c:8932
#, c-format
msgid "Error: <new name> argument is missing."
msgstr "Помилка: не вказано параметр <нова назва>."
-#: ../clients/cli/connections.c:8936 ../clients/cli/connections.c:9433
+#: ../clients/cli/connections.c:8938 ../clients/cli/connections.c:9435
#, c-format
msgid "Error: unknown extra argument: '%s'."
msgstr "Помилка: невідомий зайвий параметр: «%s»."
-#: ../clients/cli/connections.c:8970
+#: ../clients/cli/connections.c:8972
#, c-format
msgid "Error: not all connections deleted."
msgstr "Помилка: вилучено не уÑÑ– з'єднаннÑ."
-#: ../clients/cli/connections.c:8971
+#: ../clients/cli/connections.c:8973
#, c-format
msgid "Error: Connection deletion failed: %s\n"
msgstr "Помилка: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ з'єднаннÑ: %s\n"
-#: ../clients/cli/connections.c:9026 ../clients/cli/connections.c:9151
+#: ../clients/cli/connections.c:9028 ../clients/cli/connections.c:9153
#, c-format
msgid "Error: %s.\n"
msgstr "Помилка: %s.\n"
-#: ../clients/cli/connections.c:9027 ../clients/cli/connections.c:9152
+#: ../clients/cli/connections.c:9029 ../clients/cli/connections.c:9154
#, c-format
msgid "Error: not all connections found."
msgstr "Помилка: знайдено не уÑÑ– з'єднаннÑ."
-#: ../clients/cli/connections.c:9083
+#: ../clients/cli/connections.c:9085
#, c-format
msgid "Error: cannot delete unknown connection(s): %s."
msgstr "Помилка: не можна вилучати невідомі з'єднаннÑ: %s."
-#: ../clients/cli/connections.c:9092
+#: ../clients/cli/connections.c:9094
#, c-format
msgid "%s: connection profile changed\n"
msgstr "%s: змінено профіль з'єднаннÑ\n"
-#: ../clients/cli/connections.c:9118
+#: ../clients/cli/connections.c:9120
#, c-format
msgid "%s: connection profile created\n"
msgstr "%s: Ñтворено профіль з'єднаннÑ\n"
-#: ../clients/cli/connections.c:9127
+#: ../clients/cli/connections.c:9129
#, c-format
msgid "%s: connection profile removed\n"
msgstr "%s: вилучено профіль з'єднаннÑ\n"
-#: ../clients/cli/connections.c:9204
+#: ../clients/cli/connections.c:9206
#, c-format
msgid "Error: failed to reload connections: %s."
msgstr "Помилка: не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ з'єднаннÑ: %s."
-#: ../clients/cli/connections.c:9235
+#: ../clients/cli/connections.c:9237
#, c-format
msgid "Error: failed to load connection: %s."
msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ з'єднаннÑ: %s."
-#: ../clients/cli/connections.c:9243
+#: ../clients/cli/connections.c:9245
#, c-format
msgid "Could not load file '%s'\n"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл «%s»\n"
-#: ../clients/cli/connections.c:9247
+#: ../clients/cli/connections.c:9249
msgid "File to import: "
msgstr "Файл Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ: "
-#: ../clients/cli/connections.c:9278
+#: ../clients/cli/connections.c:9280
#, c-format
msgid "Error: No arguments provided."
msgstr "Помилка: не надано аргументів."
-#: ../clients/cli/connections.c:9309
+#: ../clients/cli/connections.c:9311
#, c-format
msgid "Warning: 'type' already specified, ignoring extra one.\n"
msgstr ""
"ПопередженнÑ: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«type» вже задано, зайве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾.\n"
-#: ../clients/cli/connections.c:9324
+#: ../clients/cli/connections.c:9326
#, c-format
msgid "Warning: 'file' already specified, ignoring extra one.\n"
msgstr ""
"ПопередженнÑ: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«file» вже задано, зайве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾.\n"
-#: ../clients/cli/connections.c:9338
+#: ../clients/cli/connections.c:9340
#, c-format
msgid "Error: 'type' argument is required."
msgstr "Помилка: Ñлід вказати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«type»."
-#: ../clients/cli/connections.c:9343
+#: ../clients/cli/connections.c:9345
#, c-format
msgid "Error: 'file' argument is required."
msgstr "Помилка: Ñлід вказати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«file»."
-#: ../clients/cli/connections.c:9353
+#: ../clients/cli/connections.c:9355
#, c-format
msgid "Error: failed to find VPN plugin for %s."
msgstr "Помилка: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ додаток VPN Ð´Ð»Ñ %s."
-#: ../clients/cli/connections.c:9362 ../clients/cli/connections.c:9454
+#: ../clients/cli/connections.c:9364 ../clients/cli/connections.c:9456
#, c-format
msgid "Error: failed to load VPN plugin: %s."
msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ додаток VPN: %s."
-#: ../clients/cli/connections.c:9373
+#: ../clients/cli/connections.c:9375
#, c-format
msgid "Error: failed to import '%s': %s."
msgstr "Помилка: не вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ «%s»: %s."
-#: ../clients/cli/connections.c:9439
+#: ../clients/cli/connections.c:9441
msgid "Output file name: "
msgstr "Ðазва файла результатів: "
-#: ../clients/cli/connections.c:9444
+#: ../clients/cli/connections.c:9446
#, c-format
msgid "Error: the connection is not VPN."
msgstr "Помилка: з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ належить до типу VPN."
-#: ../clients/cli/connections.c:9468
+#: ../clients/cli/connections.c:9470
#, c-format
msgid "Error: failed to create temporary file %s."
msgstr "Помилка: не вдалоÑÑ Ñтворити тимчаÑовий файл %s."
-#: ../clients/cli/connections.c:9478
+#: ../clients/cli/connections.c:9480
#, c-format
msgid "Error: failed to export '%s': %s."
msgstr "Помилка: не вдалоÑÑ ÐµÐºÑпортувати «%s»: %s."
-#: ../clients/cli/connections.c:9492
+#: ../clients/cli/connections.c:9494
#, c-format
msgid "Error: failed to read temporary file '%s': %s."
msgstr "Помилка: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ тимчаÑовий файл «%s»: %s."
@@ -4188,11 +4183,11 @@ msgstr "Ðе вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ конвеєр пейджера
msgid "(unknown)"
msgstr "(невідомо)"
-#: ../clients/cli/utils.h:317 ../clients/common/nm-meta-setting-desc.c:4203
+#: ../clients/cli/utils.h:317 ../clients/common/nm-meta-setting-desc.c:4206
msgid "on"
msgstr "увімкн."
-#: ../clients/cli/utils.h:317 ../clients/common/nm-meta-setting-desc.c:4203
+#: ../clients/cli/utils.h:317 ../clients/common/nm-meta-setting-desc.c:4206
msgid "off"
msgstr "вимкн."
@@ -4755,7 +4750,7 @@ msgstr "%s (%s)"
#: ../clients/common/nm-meta-setting-desc.c:1373
#: ../clients/common/nm-meta-setting-desc.c:1381
-#: ../clients/common/nm-meta-setting-desc.c:4225
+#: ../clients/common/nm-meta-setting-desc.c:4228
msgid "'%s' is out of range [%"
msgstr "«%s» поза діапазоном [%"
@@ -4780,7 +4775,7 @@ msgid "invalid option '%s', use a combination of [%s]"
msgstr "некоректний параметр «%s», ÑкориÑтайтеÑÑ ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ”ÑŽ [%s]"
#: ../clients/common/nm-meta-setting-desc.c:1621
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1056
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1101
#, c-format
msgid "invalid option '%s', use one of [%s]"
msgstr ""
@@ -4861,7 +4856,7 @@ msgstr ""
"номерів)"
#: ../clients/common/nm-meta-setting-desc.c:2105
-#: ../clients/common/nm-meta-setting-desc.c:4098
+#: ../clients/common/nm-meta-setting-desc.c:4101
#: ../libnm-core/nm-setting-ovs-bridge.c:187 ../src/nm-config.c:548
#, c-format
msgid "'%s' is not valid"
@@ -4889,17 +4884,12 @@ msgstr ""
"забагато аргументів. Будь лаÑка, вкажіть файл закритого ключа Ñ–, "
"необов'Ñзково, пароль"
-#: ../clients/common/nm-meta-setting-desc.c:2406
-#, c-format
-msgid "failed to unset bond option \"%s\""
-msgstr "не вдалоÑÑ ÑкаÑувати вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° bond «%s»"
-
-#: ../clients/common/nm-meta-setting-desc.c:2427
+#: ../clients/common/nm-meta-setting-desc.c:2423
#, c-format
msgid "failed to set bond option \"%s\""
msgstr "не вдалоÑÑ Ð²Ñтановити параметр bond «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:2472
+#: ../clients/common/nm-meta-setting-desc.c:2470
#, c-format
msgid ""
"Enter a list of bonding options formatted as:\n"
@@ -4937,125 +4927,125 @@ msgstr ""
#. * hacky: we can not see if the type is already set, because
#. * nmc_setting_set_property() is called only after the property
#. * we're setting (type) has been removed.
-#: ../clients/common/nm-meta-setting-desc.c:2537
+#: ../clients/common/nm-meta-setting-desc.c:2535
#, c-format
msgid "Can not change the connection type"
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ тип з'єднаннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:2614
+#: ../clients/common/nm-meta-setting-desc.c:2617
#, c-format
msgid "invalid permission \"%s\""
msgstr "некоректні права доÑтупу «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:2713
+#: ../clients/common/nm-meta-setting-desc.c:2716
#, c-format
msgid "the value '%s' is not a valid UUID"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» не Ñ” коректним UUID"
-#: ../clients/common/nm-meta-setting-desc.c:2782
+#: ../clients/common/nm-meta-setting-desc.c:2785
msgid "0 (disabled)"
msgstr "0 (вимкнено)"
-#: ../clients/common/nm-meta-setting-desc.c:2788
+#: ../clients/common/nm-meta-setting-desc.c:2791
msgid "enabled, "
msgstr "увімкнено, "
-#: ../clients/common/nm-meta-setting-desc.c:2790
+#: ../clients/common/nm-meta-setting-desc.c:2793
msgid "advertise, "
msgstr "оголошеннÑ, "
-#: ../clients/common/nm-meta-setting-desc.c:2792
+#: ../clients/common/nm-meta-setting-desc.c:2795
msgid "willing, "
msgstr "наданнÑ, "
-#: ../clients/common/nm-meta-setting-desc.c:2876
+#: ../clients/common/nm-meta-setting-desc.c:2879
#, c-format
msgid "'%s' is not a valid DCB flag"
msgstr "«%s» не є коректним прапорцем DCB"
-#: ../clients/common/nm-meta-setting-desc.c:2903
+#: ../clients/common/nm-meta-setting-desc.c:2906
msgid "must contain 8 comma-separated numbers"
msgstr "має міÑтити 8 чиÑел, відокремлених комами"
-#: ../clients/common/nm-meta-setting-desc.c:2919
+#: ../clients/common/nm-meta-setting-desc.c:2922
#, c-format
msgid "'%s' not a number between 0 and %u (inclusive) or %u"
msgstr "«%s» не Ñ” чиÑлом у діапазоні від 0 до %u (включно) або %u"
-#: ../clients/common/nm-meta-setting-desc.c:2927
+#: ../clients/common/nm-meta-setting-desc.c:2930
#, c-format
msgid "'%s' not a number between 0 and %u (inclusive)"
msgstr "«%s» не Ñ” чиÑлом у діапазоні від 0 до %u (включно)"
-#: ../clients/common/nm-meta-setting-desc.c:2953
+#: ../clients/common/nm-meta-setting-desc.c:2956
#, c-format
msgid "changes will have no effect until '%s' includes 1 (enabled)"
msgstr "зміни не буде задіÑно, доки «%s» не включатиме 1 (увімкнено)"
-#: ../clients/common/nm-meta-setting-desc.c:2984
+#: ../clients/common/nm-meta-setting-desc.c:2987
#, c-format
msgid "bandwidth percentages must total 100%%"
msgstr "Ñума чаÑтин каналу у відÑотках має Ñкладати 100%%"
-#: ../clients/common/nm-meta-setting-desc.c:3058
-#: ../clients/common/nm-meta-setting-desc.c:3067
+#: ../clients/common/nm-meta-setting-desc.c:3061
+#: ../clients/common/nm-meta-setting-desc.c:3070
msgid "SIM operator ID must be a 5 or 6 number MCCMNC code"
msgstr ""
"Ідентифікатор оператора SIM має бути п'Ñти- або шеÑтицифровим кодом MCCMNC"
-#: ../clients/common/nm-meta-setting-desc.c:3087
+#: ../clients/common/nm-meta-setting-desc.c:3090
#, c-format
msgid "'%s' is not a valid IBoIP P_Key"
msgstr "«%s» не є коректним закритим ключем IBoIP"
-#: ../clients/common/nm-meta-setting-desc.c:3109
+#: ../clients/common/nm-meta-setting-desc.c:3112
msgid "default"
msgstr "типовий"
-#: ../clients/common/nm-meta-setting-desc.c:3268
+#: ../clients/common/nm-meta-setting-desc.c:3271
#, c-format
msgid "invalid IPv%c address '%s'"
msgstr "некоректна адреÑа IPv%c, «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:3394
+#: ../clients/common/nm-meta-setting-desc.c:3397
#, c-format
msgid "invalid gateway address '%s'"
msgstr "некоректна адреÑа шлюзу, «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:3542
+#: ../clients/common/nm-meta-setting-desc.c:3545
#, c-format
msgid "'%s' is not a valid channel; use <1-13>"
msgstr "«%s» не є коректним каналом; канал має належати діапазону <1-13>"
-#: ../clients/common/nm-meta-setting-desc.c:3621
+#: ../clients/common/nm-meta-setting-desc.c:3624
msgid "The valid syntax is: vf [attribute=value]... [,vf [attribute=value]...]"
msgstr ""
"Коректна ÑинтакÑична конÑтрукціÑ: vf [атрибут=значеннÑ]... [,vf "
"[атрибут=значеннÑ]...]"
-#: ../clients/common/nm-meta-setting-desc.c:3647
-#: ../clients/common/nm-meta-setting-desc.c:3729
+#: ../clients/common/nm-meta-setting-desc.c:3650
+#: ../clients/common/nm-meta-setting-desc.c:3732
msgid ""
"The valid syntax is: '[root | parent <handle>] [handle <handle>] <kind>'"
msgstr ""
"Коректний ÑинтакÑиÑ: '[root | parent <деÑкриптор>] [handle <деÑкриптор>] "
"<тип>'"
-#: ../clients/common/nm-meta-setting-desc.c:3673
+#: ../clients/common/nm-meta-setting-desc.c:3676
msgid "The valid syntax is: '<vid>[-<vid>] [pvid] [untagged]'"
msgstr "Коректний ÑинтакÑиÑ: '<vid>[-<vid>] [pvid] [untagged]'"
-#: ../clients/common/nm-meta-setting-desc.c:3870
+#: ../clients/common/nm-meta-setting-desc.c:3873
#, c-format
msgid "invalid priority map '%s'"
msgstr "некоректне Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ–, «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:3958
+#: ../clients/common/nm-meta-setting-desc.c:3961
#, c-format
msgid "'%s' is not valid; 2 or 3 strings should be provided"
msgstr "«%s» не Ñ” коректним значеннÑм; Ñлід вказати 2 або 3 Ñ€Ñдки"
-#: ../clients/common/nm-meta-setting-desc.c:3994
+#: ../clients/common/nm-meta-setting-desc.c:3997
#, c-format
msgid ""
"Enter a list of S/390 options formatted as:\n"
@@ -5066,17 +5056,17 @@ msgstr ""
" параметр = <значеннÑ>, параметр = <значеннÑ>,...\n"
"Коректні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð²: %s\n"
-#: ../clients/common/nm-meta-setting-desc.c:4026
+#: ../clients/common/nm-meta-setting-desc.c:4029
#, c-format
msgid "'%s' is not a valid channel"
msgstr "«%s» не є коректним каналом"
-#: ../clients/common/nm-meta-setting-desc.c:4032
+#: ../clients/common/nm-meta-setting-desc.c:4035
#, c-format
msgid "'%ld' is not a valid channel"
msgstr "«%ld» не є коректним каналом"
-#: ../clients/common/nm-meta-setting-desc.c:4048
+#: ../clients/common/nm-meta-setting-desc.c:4051
#: ../libnm-core/nm-setting-sriov.c:424 ../libnm-core/nm-setting-wired.c:753
#: ../libnm-core/nm-setting-wired.c:769 ../libnm-core/nm-setting-wired.c:833
#: ../libnm-core/nm-setting-wired.c:891 ../libnm-core/nm-setting-wireless.c:944
@@ -5085,7 +5075,7 @@ msgstr "«%ld» не є коректним каналом"
msgid "'%s' is not a valid MAC address"
msgstr "%s не Ñ” припуÑтимою MAC-адреÑою"
-#: ../clients/common/nm-meta-setting-desc.c:4109
+#: ../clients/common/nm-meta-setting-desc.c:4112
#, c-format
msgid ""
"'%s' not compatible with %s '%s', please change the key or set the right %s "
@@ -5094,64 +5084,64 @@ msgstr ""
"«%s» Ñ” неÑуміÑним з %s «%s», будь лаÑка, Ñпочатку змініть ключ або "
"вÑтановіть правильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s."
-#: ../clients/common/nm-meta-setting-desc.c:4124
+#: ../clients/common/nm-meta-setting-desc.c:4127
#, c-format
msgid "WEP key is guessed to be of '%s'"
msgstr "ПрипуÑкаємо, що ключем WEP Ñ” «%s»"
-#: ../clients/common/nm-meta-setting-desc.c:4130
+#: ../clients/common/nm-meta-setting-desc.c:4133
#, c-format
msgid "WEP key index set to '%d'"
msgstr "Ñ–Ð½Ð´ÐµÐºÑ ÐºÐ»ÑŽÑ‡Ð° WEP вÑтановлено у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%d»"
-#: ../clients/common/nm-meta-setting-desc.c:4169
+#: ../clients/common/nm-meta-setting-desc.c:4172
#, c-format
msgid "'%s' is not compatible with '%s' type, please change or delete the key."
msgstr "«%s» неÑуміÑний з типом «%s». Будь лаÑка, змініть або вилучіть ключ."
-#: ../clients/common/nm-meta-setting-desc.c:4249
+#: ../clients/common/nm-meta-setting-desc.c:4252
#, c-format
msgid "'%s' is not valid; use 'on', 'off', or 'ignore'"
msgstr ""
"«%s» не Ñ” коректним значеннÑм; можна викориÑтовувати лише Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«on», "
"«off» або «ignore»"
-#: ../clients/common/nm-meta-setting-desc.c:4315
+#: ../clients/common/nm-meta-setting-desc.c:4318
msgid "Bonding primary interface [none]"
msgstr "ОÑновний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¸Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово немає]"
#. this is a virtual property, only needed during "ask" mode.
-#: ../clients/common/nm-meta-setting-desc.c:4322
+#: ../clients/common/nm-meta-setting-desc.c:4325
msgid "Bonding monitoring mode"
msgstr "Режим ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° зв'Ñзком"
-#: ../clients/common/nm-meta-setting-desc.c:4331
+#: ../clients/common/nm-meta-setting-desc.c:4334
msgid "Bonding miimon [100]"
msgstr "ЧаÑтота ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ MII прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово 100]"
-#: ../clients/common/nm-meta-setting-desc.c:4339
+#: ../clients/common/nm-meta-setting-desc.c:4342
msgid "Bonding downdelay [0]"
msgstr "downdelay прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово 0]"
-#: ../clients/common/nm-meta-setting-desc.c:4347
+#: ../clients/common/nm-meta-setting-desc.c:4350
msgid "Bonding updelay [0]"
msgstr "updelay прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово 0]"
-#: ../clients/common/nm-meta-setting-desc.c:4355
+#: ../clients/common/nm-meta-setting-desc.c:4358
msgid "Bonding arp-interval [0]"
msgstr "arp-interval прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово 0]"
-#: ../clients/common/nm-meta-setting-desc.c:4363
+#: ../clients/common/nm-meta-setting-desc.c:4366
msgid "Bonding arp-ip-target [none]"
msgstr "arp-ip-target прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:4371
+#: ../clients/common/nm-meta-setting-desc.c:4374
msgid "LACP rate ('slow' or 'fast') [slow]"
msgstr "ШвидкіÑÑ‚ÑŒ LACP (slow або fast) [slow]"
#. macro that returns @func as const (guint32(*)(NMSetting*)) type, but checks
#. * that the actual type is (guint32(*)(type *)).
-#: ../clients/common/nm-meta-setting-desc.c:4538
+#: ../clients/common/nm-meta-setting-desc.c:4541
msgid ""
"nmcli can accepts both direct JSON configuration data and a file name "
"containing the configuration. In the latter case the file is read and the "
@@ -5170,7 +5160,7 @@ msgstr ""
"\"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n"
" set team.config /etc/my-team.conf\n"
-#: ../clients/common/nm-meta-setting-desc.c:4546
+#: ../clients/common/nm-meta-setting-desc.c:4549
msgid ""
"Enter a list of link watchers formatted as dictionaries where the keys are "
"teamd properties. Dictionary pairs are in the form: key=value and pairs are "
@@ -5219,11 +5209,11 @@ msgstr ""
" name=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, "
"name=ethtool delay-up=3\n"
-#: ../clients/common/nm-meta-setting-desc.c:4595
+#: ../clients/common/nm-meta-setting-desc.c:4598
msgid "IEEE 802.15.4 (WPAN) parent device or connection UUID"
msgstr "БатьківÑький приÑтрій або UUID з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ IEEE 802.15.4 (WPAN)"
-#: ../clients/common/nm-meta-setting-desc.c:4631
+#: ../clients/common/nm-meta-setting-desc.c:4634
msgid ""
"Enter file path to CA certificate (optionally prefixed with file://).\n"
" [file://]<file path>\n"
@@ -5236,7 +5226,7 @@ msgstr ""
"форматі проÑтого маÑиву даних.\n"
"Приклад: /home/cimrman/cacert.crt\n"
-#: ../clients/common/nm-meta-setting-desc.c:4673
+#: ../clients/common/nm-meta-setting-desc.c:4676
msgid ""
"Enter file path to client certificate (optionally prefixed with file://).\n"
" [file://]<file path>\n"
@@ -5250,7 +5240,7 @@ msgstr ""
"форматі проÑтого маÑиву даних.\n"
"Приклад: /home/cimrman/jara.crt\n"
-#: ../clients/common/nm-meta-setting-desc.c:4730
+#: ../clients/common/nm-meta-setting-desc.c:4733
msgid ""
"Enter file path to CA certificate for inner authentication (optionally "
"prefixed\n"
@@ -5266,7 +5256,7 @@ msgstr ""
"форматі проÑтого маÑиву даних.\n"
"Приклад: /home/cimrman/ca-zweite-phase.crt\n"
-#: ../clients/common/nm-meta-setting-desc.c:4773
+#: ../clients/common/nm-meta-setting-desc.c:4776
msgid ""
"Enter file path to client certificate for inner authentication (optionally "
"prefixed\n"
@@ -5282,7 +5272,7 @@ msgstr ""
"форматі проÑтого маÑиву даних.\n"
"Приклад: /home/cimrman/jara-zweite-phase.crt\n"
-#: ../clients/common/nm-meta-setting-desc.c:4800
+#: ../clients/common/nm-meta-setting-desc.c:4803
msgid ""
"Enter bytes as a list of hexadecimal values.\n"
"Two formats are accepted:\n"
@@ -5304,8 +5294,8 @@ msgstr ""
"Приклади: ab0455a6ea3a74C2\n"
" ab 4 55 0xa6 ea 3a 74 C2\n"
-#: ../clients/common/nm-meta-setting-desc.c:4817
-#: ../clients/common/nm-meta-setting-desc.c:4835
+#: ../clients/common/nm-meta-setting-desc.c:4820
+#: ../clients/common/nm-meta-setting-desc.c:4838
msgid ""
"Enter path to a private key and the key password (if not set yet):\n"
" [file://]<file path> [<password>]\n"
@@ -5319,84 +5309,84 @@ msgstr ""
"форматі проÑтого маÑиву даних.\n"
"Приклад: /home/cimrman/jara-priv-key Dardanely\n"
-#: ../clients/common/nm-meta-setting-desc.c:4874
+#: ../clients/common/nm-meta-setting-desc.c:4877
#: ../clients/common/nm-secret-agent-simple.c:270
#: ../clients/common/nm-secret-agent-simple.c:357
#: ../clients/tui/nmt-page-dsl.c:49 ../clients/tui/nmt-page-wifi.c:333
msgid "Username"
msgstr "КориÑтувач"
-#: ../clients/common/nm-meta-setting-desc.c:4880
-#: ../clients/common/nm-meta-setting-desc.c:5164
-#: ../clients/common/nm-meta-setting-desc.c:5591
-#: ../clients/common/nm-meta-setting-desc.c:6579
+#: ../clients/common/nm-meta-setting-desc.c:4883
+#: ../clients/common/nm-meta-setting-desc.c:5167
+#: ../clients/common/nm-meta-setting-desc.c:5594
+#: ../clients/common/nm-meta-setting-desc.c:6600
msgid "Password [none]"
msgstr "Пароль [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:4926
+#: ../clients/common/nm-meta-setting-desc.c:4929
msgid "Bluetooth device address"
msgstr "ÐдреÑа приÑтрою Bluetooth"
-#: ../clients/common/nm-meta-setting-desc.c:4974
-#: ../clients/common/nm-meta-setting-desc.c:5644
-#: ../clients/common/nm-meta-setting-desc.c:7287
-#: ../clients/common/nm-meta-setting-desc.c:7325
-#: ../clients/common/nm-meta-setting-desc.c:7507
-#: ../clients/common/nm-meta-setting-desc.c:7740
+#: ../clients/common/nm-meta-setting-desc.c:4977
+#: ../clients/common/nm-meta-setting-desc.c:5665
+#: ../clients/common/nm-meta-setting-desc.c:7320
+#: ../clients/common/nm-meta-setting-desc.c:7358
+#: ../clients/common/nm-meta-setting-desc.c:7540
+#: ../clients/common/nm-meta-setting-desc.c:7773
msgid "MAC [none]"
msgstr "MAC [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:4980
+#: ../clients/common/nm-meta-setting-desc.c:4983
msgid "Enable STP [no]"
msgstr "Увімкнути STP [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:4986
+#: ../clients/common/nm-meta-setting-desc.c:4989
msgid "STP priority [32768]"
msgstr "Пріоритет STP [типово 32768]"
-#: ../clients/common/nm-meta-setting-desc.c:4992
+#: ../clients/common/nm-meta-setting-desc.c:4995
msgid "Forward delay [15]"
msgstr "Затримка переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ [типово 15]"
-#: ../clients/common/nm-meta-setting-desc.c:4998
+#: ../clients/common/nm-meta-setting-desc.c:5001
msgid "Hello time [2]"
msgstr "Ð§Ð°Ñ Ð½Ð° Ð²Ñ–Ñ‚Ð°Ð½Ð½Ñ [типово 2]"
-#: ../clients/common/nm-meta-setting-desc.c:5004
+#: ../clients/common/nm-meta-setting-desc.c:5007
msgid "Max age [20]"
msgstr "МакÑ. вік [типово 20]"
-#: ../clients/common/nm-meta-setting-desc.c:5010
+#: ../clients/common/nm-meta-setting-desc.c:5013
msgid "MAC address ageing time [300]"
msgstr "Ð§Ð°Ñ Ð·Ð°ÑÑ‚Ð°Ñ€Ñ–Ð²Ð°Ð½Ð½Ñ MAC-адреÑи [типово 300]"
-#: ../clients/common/nm-meta-setting-desc.c:5020
+#: ../clients/common/nm-meta-setting-desc.c:5023
msgid "Group forward mask [0]"
msgstr "МаÑка групового переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ [0]"
-#: ../clients/common/nm-meta-setting-desc.c:5062
+#: ../clients/common/nm-meta-setting-desc.c:5065
msgid "Enable IGMP snooping [no]"
msgstr "Увімкнути підглÑÐ´Ð°Ð½Ð½Ñ IGMP [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:5120
+#: ../clients/common/nm-meta-setting-desc.c:5123
msgid "Bridge port priority [32]"
msgstr "Пріоритетний порт міÑтка [типово 32]"
-#: ../clients/common/nm-meta-setting-desc.c:5126
+#: ../clients/common/nm-meta-setting-desc.c:5129
msgid "Bridge port STP path cost [100]"
msgstr "ВартіÑÑ‚ÑŒ маршруту STP порту міÑтка [типово 100]"
-#: ../clients/common/nm-meta-setting-desc.c:5132
+#: ../clients/common/nm-meta-setting-desc.c:5135
msgid "Hairpin [no]"
msgstr "Початкова зона [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5158
-#: ../clients/common/nm-meta-setting-desc.c:5585
-#: ../clients/common/nm-meta-setting-desc.c:7133
+#: ../clients/common/nm-meta-setting-desc.c:5161
+#: ../clients/common/nm-meta-setting-desc.c:5588
+#: ../clients/common/nm-meta-setting-desc.c:7167
msgid "Username [none]"
msgstr "КориÑтувач [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5260
+#: ../clients/common/nm-meta-setting-desc.c:5263
msgid ""
"Enter a list of user permissions. This is a list of user names formatted "
"as:\n"
@@ -5411,7 +5401,7 @@ msgstr ""
"\n"
"Приклад: alice bob charlie\n"
-#: ../clients/common/nm-meta-setting-desc.c:5313
+#: ../clients/common/nm-meta-setting-desc.c:5316
msgid ""
"Enter secondary connections that should be activated when this connection "
"is\n"
@@ -5432,7 +5422,7 @@ msgstr ""
"\n"
"Приклад: private-openvpn, fe6ba5d8-c2fc-4aae-b2e3-97efddd8d9a7\n"
-#: ../clients/common/nm-meta-setting-desc.c:5336
+#: ../clients/common/nm-meta-setting-desc.c:5339
msgid ""
"Enter a value which indicates whether the connection is subject to a data\n"
"quota, usage costs or other limitations. Accepted options are:\n"
@@ -5448,25 +5438,25 @@ msgstr ""
"«unknown» — дозволити NetworkManager вибирати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° допомогою "
"евриÑтики\n"
-#: ../clients/common/nm-meta-setting-desc.c:5601
+#: ../clients/common/nm-meta-setting-desc.c:5604
msgid "APN"
msgstr "APN"
-#: ../clients/common/nm-meta-setting-desc.c:5653
-#: ../clients/common/nm-meta-setting-desc.c:7356
-#: ../clients/common/nm-meta-setting-desc.c:7547
+#: ../clients/common/nm-meta-setting-desc.c:5674
+#: ../clients/common/nm-meta-setting-desc.c:7389
+#: ../clients/common/nm-meta-setting-desc.c:7580
msgid "MTU [auto]"
msgstr "MTU [типово авто]"
-#: ../clients/common/nm-meta-setting-desc.c:5672
+#: ../clients/common/nm-meta-setting-desc.c:5693
msgid "P_KEY [none]"
msgstr "P_KEY [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5681
+#: ../clients/common/nm-meta-setting-desc.c:5702
msgid "Parent interface [none]"
msgstr "БатьківÑький Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5708
+#: ../clients/common/nm-meta-setting-desc.c:5729
msgid ""
"Enter a list of IPv4 addresses of DNS servers.\n"
"\n"
@@ -5476,11 +5466,11 @@ msgstr ""
"\n"
"Приклад: 8.8.8.8, 8.8.4.4\n"
-#: ../clients/common/nm-meta-setting-desc.c:5756
+#: ../clients/common/nm-meta-setting-desc.c:5777
msgid "IPv4 address (IP[/plen]) [none]"
msgstr "ÐдреÑа IPv4 (IP[/plen]) [немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5758
+#: ../clients/common/nm-meta-setting-desc.c:5779
msgid ""
"Enter a list of IPv4 addresses formatted as:\n"
" ip[/prefix], ip[/prefix],...\n"
@@ -5494,11 +5484,11 @@ msgstr ""
"\n"
"Приклад: 192.168.1.5/24, 10.0.0.11/24\n"
-#: ../clients/common/nm-meta-setting-desc.c:5777
+#: ../clients/common/nm-meta-setting-desc.c:5798
msgid "IPv4 gateway [none]"
msgstr "Шлюз IPv4 [немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5785
+#: ../clients/common/nm-meta-setting-desc.c:5806
msgid ""
"Enter a list of IPv4 routes formatted as:\n"
" ip[/prefix] [next-hop] [metric],...\n"
@@ -5521,7 +5511,7 @@ msgstr ""
"Приклади: 192.168.2.0/24 192.168.2.1 3, 10.1.0.0/16 10.0.0.254\n"
" 10.1.2.0/24\n"
-#: ../clients/common/nm-meta-setting-desc.c:5825
+#: ../clients/common/nm-meta-setting-desc.c:5846
msgid ""
"Enter a list of IPv4 routing rules formatted as:\n"
" priority [prio] [from [src]] [to [dst]], ,...\n"
@@ -5531,7 +5521,7 @@ msgstr ""
" priority [пріоритетніÑÑ‚ÑŒ] [from [джерело]] [to [призначеннÑ]], ,...\n"
"\n"
-#: ../clients/common/nm-meta-setting-desc.c:5932
+#: ../clients/common/nm-meta-setting-desc.c:5953
msgid ""
"Enter a list of IPv6 addresses of DNS servers. If the IPv6 configuration "
"method is 'auto' these DNS servers are appended to those (if any) returned "
@@ -5552,11 +5542,11 @@ msgstr ""
"\n"
"Приклад: 2607:f0d0:1002:51::4, 2607:f0d0:1002:51::1\n"
-#: ../clients/common/nm-meta-setting-desc.c:5986
+#: ../clients/common/nm-meta-setting-desc.c:6007
msgid "IPv6 address (IP[/plen]) [none]"
msgstr "ÐдреÑа IPv6 (IP[/plen]) [немає]"
-#: ../clients/common/nm-meta-setting-desc.c:5988
+#: ../clients/common/nm-meta-setting-desc.c:6009
msgid ""
"Enter a list of IPv6 addresses formatted as:\n"
" ip[/prefix], ip[/prefix],...\n"
@@ -5570,11 +5560,11 @@ msgstr ""
"\n"
"Приклад: 2607:f0d0:1002:51::4/64, 1050:0:0:0:5:600:300c:326b\n"
-#: ../clients/common/nm-meta-setting-desc.c:6007
+#: ../clients/common/nm-meta-setting-desc.c:6028
msgid "IPv6 gateway [none]"
msgstr "Шлюз IPv6 [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:6015
+#: ../clients/common/nm-meta-setting-desc.c:6036
msgid ""
"Enter a list of IPv6 routes formatted as:\n"
" ip[/prefix] [next-hop] [metric],...\n"
@@ -5599,7 +5589,7 @@ msgstr ""
"db8:beef::3 2\n"
" abbe::/64 55\n"
-#: ../clients/common/nm-meta-setting-desc.c:6055
+#: ../clients/common/nm-meta-setting-desc.c:6076
msgid ""
"Enter a list of IPv6 routing rules formatted as:\n"
" priority [prio] [from [src]] [to [dst]], ,...\n"
@@ -5609,170 +5599,174 @@ msgstr ""
" priority [пріоритетніÑÑ‚ÑŒ] [from [джерело]] [to [призначеннÑ]], ,...\n"
"\n"
-#: ../clients/common/nm-meta-setting-desc.c:6162
-#: ../clients/common/nm-meta-setting-desc.c:7186
+#: ../clients/common/nm-meta-setting-desc.c:6183
+#: ../clients/common/nm-meta-setting-desc.c:7220
msgid "Parent device [none]"
msgstr "БатьківÑький приÑтрій [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:6168
+#: ../clients/common/nm-meta-setting-desc.c:6189
msgid "Local endpoint [none]"
msgstr "Локальна кінцева точка [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:6175
-#: ../clients/common/nm-meta-setting-desc.c:7206
+#: ../clients/common/nm-meta-setting-desc.c:6196
+#: ../clients/common/nm-meta-setting-desc.c:7239
msgid "Remote"
msgstr "Віддалений"
-#: ../clients/common/nm-meta-setting-desc.c:6220
+#: ../clients/common/nm-meta-setting-desc.c:6241
msgid "MACsec parent device or connection UUID"
msgstr "БатьківÑький приÑтрій MACsec або UUID з'єднаннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:6241
+#: ../clients/common/nm-meta-setting-desc.c:6262
msgid "Enable encryption [yes]"
msgstr "Увімкнути ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ [типово «так»]"
-#: ../clients/common/nm-meta-setting-desc.c:6247
+#: ../clients/common/nm-meta-setting-desc.c:6268
#: ../clients/common/nm-secret-agent-simple.c:929
msgid "MKA CAK"
msgstr "MKA CAK"
-#: ../clients/common/nm-meta-setting-desc.c:6257
+#: ../clients/common/nm-meta-setting-desc.c:6278
msgid "MKA_CKN"
msgstr "MKA_CKN"
-#: ../clients/common/nm-meta-setting-desc.c:6263
+#: ../clients/common/nm-meta-setting-desc.c:6284
msgid "SCI port [1]"
msgstr "Порт SCI [1]"
-#: ../clients/common/nm-meta-setting-desc.c:6289
+#: ../clients/common/nm-meta-setting-desc.c:6310
msgid "MACVLAN parent device or connection UUID"
msgstr "БатьківÑький приÑтрій MACVLAN або UUID з'єднаннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:6310
+#: ../clients/common/nm-meta-setting-desc.c:6331
msgid "Tap [no]"
msgstr "Tap [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:6377
-#: ../clients/common/nm-meta-setting-desc.c:7461
+#: ../clients/common/nm-meta-setting-desc.c:6398
+#: ../clients/common/nm-meta-setting-desc.c:7494
#: ../clients/tui/nmt-page-wifi.c:202
msgid "SSID"
msgstr "SSID"
-#: ../clients/common/nm-meta-setting-desc.c:6386
+#: ../clients/common/nm-meta-setting-desc.c:6407
msgid "OLPC Mesh channel [1]"
msgstr "Канал OLPC Mesh [типово 1]"
-#: ../clients/common/nm-meta-setting-desc.c:6395
+#: ../clients/common/nm-meta-setting-desc.c:6416
msgid "DHCP anycast MAC address [none]"
msgstr "MAC-адреÑа довільного надÑÐ¸Ð»Ð°Ð½Ð½Ñ (anycast) DHCP [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:6560
+#: ../clients/common/nm-meta-setting-desc.c:6581
msgid "PPPoE parent device"
msgstr "БатьківÑький приÑтрій PPPoE"
-#: ../clients/common/nm-meta-setting-desc.c:6566
+#: ../clients/common/nm-meta-setting-desc.c:6587
msgid "Service [none]"
msgstr "Служба [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:6573
+#: ../clients/common/nm-meta-setting-desc.c:6594
msgid "PPPoE username"
msgstr "КориÑтувач PPPoE"
-#: ../clients/common/nm-meta-setting-desc.c:6609
+#: ../clients/common/nm-meta-setting-desc.c:6630
msgid "Browser only [no]"
msgstr "Лише навігатор [типово «ні»]"
-#: ../clients/common/nm-meta-setting-desc.c:6615
+#: ../clients/common/nm-meta-setting-desc.c:6636
msgid "PAC URL"
msgstr "ÐдреÑа PAC"
-#: ../clients/common/nm-meta-setting-desc.c:6621
+#: ../clients/common/nm-meta-setting-desc.c:6642
msgid "PAC script"
msgstr "Скрипт PAC"
-#: ../clients/common/nm-meta-setting-desc.c:6745
-#: ../clients/common/nm-meta-setting-desc.c:6933
+#: ../clients/common/nm-meta-setting-desc.c:6766
+#: ../clients/common/nm-meta-setting-desc.c:6954
msgid "Team JSON configuration [none]"
msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ JSON команди [немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7036
+#: ../clients/common/nm-meta-setting-desc.c:7057
msgid "User ID [none]"
msgstr "Ідентифікатор кориÑтувача [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7042
+#: ../clients/common/nm-meta-setting-desc.c:7063
msgid "Group ID [none]"
msgstr "Ідентифікатор групи [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7048
+#: ../clients/common/nm-meta-setting-desc.c:7069
msgid "Enable PI [no]"
msgstr "Увімкнути PI [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:7054
+#: ../clients/common/nm-meta-setting-desc.c:7075
msgid "Enable VNET header [no]"
msgstr "Увімкнути заголовок VNET [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:7060
+#: ../clients/common/nm-meta-setting-desc.c:7081
msgid "Enable multi queue [no]"
msgstr "Увімкнути декілька черг [типово ні]"
-#: ../clients/common/nm-meta-setting-desc.c:7073
+#: ../clients/common/nm-meta-setting-desc.c:7094
+msgid "veth peer"
+msgstr "вузол veth"
+
+#: ../clients/common/nm-meta-setting-desc.c:7107
msgid "VLAN parent device or connection UUID"
msgstr "БатьківÑький приÑтрій VLAN або UUID з'єднаннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:7080
+#: ../clients/common/nm-meta-setting-desc.c:7114
msgid "VLAN ID (<0-4094>)"
msgstr "Ід. VLAN (<0-4094>)"
-#: ../clients/common/nm-meta-setting-desc.c:7086
+#: ../clients/common/nm-meta-setting-desc.c:7120
msgid "VLAN flags (<0-7>) [none]"
msgstr "Прапорці VLAN (<0-7>) [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7095
+#: ../clients/common/nm-meta-setting-desc.c:7129
msgid "Ingress priority maps [none]"
msgstr "Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ– вхідного доÑтупу [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7105
+#: ../clients/common/nm-meta-setting-desc.c:7139
msgid "Egress priority maps [none]"
msgstr "Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ– вихідного доÑтупу [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7173
+#: ../clients/common/nm-meta-setting-desc.c:7207
msgid "Table [0]"
msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ [0]"
-#: ../clients/common/nm-meta-setting-desc.c:7193
+#: ../clients/common/nm-meta-setting-desc.c:7227
msgid "VXLAN ID"
msgstr "Ід. VXLAN"
-#: ../clients/common/nm-meta-setting-desc.c:7199
+#: ../clients/common/nm-meta-setting-desc.c:7233
msgid "Local address [none]"
msgstr "Локальна адреÑа [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7212
+#: ../clients/common/nm-meta-setting-desc.c:7245
msgid "Minimum source port [0]"
msgstr "Мінімальний порт джерела [0]"
-#: ../clients/common/nm-meta-setting-desc.c:7218
+#: ../clients/common/nm-meta-setting-desc.c:7251
msgid "Maximum source port [0]"
msgstr "МакÑимальний порт джерела [0]"
-#: ../clients/common/nm-meta-setting-desc.c:7224
+#: ../clients/common/nm-meta-setting-desc.c:7257
msgid "Destination port [8472]"
msgstr "Порт Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ [типово 8472]"
-#: ../clients/common/nm-meta-setting-desc.c:7264
+#: ../clients/common/nm-meta-setting-desc.c:7297
msgid "Peer"
msgstr "Вузол"
-#: ../clients/common/nm-meta-setting-desc.c:7294
+#: ../clients/common/nm-meta-setting-desc.c:7327
msgid "WiMAX NSP name"
msgstr "Ðазва NSP WiMAX"
-#: ../clients/common/nm-meta-setting-desc.c:7331
-#: ../clients/common/nm-meta-setting-desc.c:7512
+#: ../clients/common/nm-meta-setting-desc.c:7364
+#: ../clients/common/nm-meta-setting-desc.c:7545
msgid "Cloned MAC [none]"
msgstr "Клонований MAC [типово немає]"
-#: ../clients/common/nm-meta-setting-desc.c:7364
+#: ../clients/common/nm-meta-setting-desc.c:7397
msgid ""
"Enter a list of subchannels (comma or space separated).\n"
"\n"
@@ -5782,7 +5776,7 @@ msgstr ""
"\n"
"Приклад: 0.0.0e20 0.0.0e21 0.0.0e22\n"
-#: ../clients/common/nm-meta-setting-desc.c:7689
+#: ../clients/common/nm-meta-setting-desc.c:7722
msgid ""
"Enter the type of WEP keys. The accepted values are: 0 or unknown, 1 or key, "
"and 2 or passphrase.\n"
@@ -5790,221 +5784,235 @@ msgstr ""
"Вкажіть тип ключів WEP. Можливі значеннÑ: 0 або unknown (невідомо), 1 або "
"key (ключ) та 2 або passphrase (пароль).\n"
-#: ../clients/common/nm-meta-setting-desc.c:7748
+#: ../clients/common/nm-meta-setting-desc.c:7781
msgid "Short address (<0x0000-0xffff>)"
msgstr "Коротка адреÑа (<0x0000-0xffff>)"
-#: ../clients/common/nm-meta-setting-desc.c:7764
+#: ../clients/common/nm-meta-setting-desc.c:7797
msgid "PAN Identifier (<0x0000-0xffff>)"
msgstr "Ідентифікатор PAN (<0x0000-0xffff>)"
-#: ../clients/common/nm-meta-setting-desc.c:7779
+#: ../clients/common/nm-meta-setting-desc.c:7812
msgid "Page (<default|0-31>)"
msgstr "Сторінка (<default|0-31>)"
-#: ../clients/common/nm-meta-setting-desc.c:7793
+#: ../clients/common/nm-meta-setting-desc.c:7826
msgid "Channel (<default|0-26>)"
msgstr "Канал (<default|0-26>)"
#. ***************************************************************************
-#: ../clients/common/nm-meta-setting-desc.c:7928
+#: ../clients/common/nm-meta-setting-desc.c:7961
msgid "6LOWPAN settings"
msgstr "Параметри 6LOWPAN"
-#: ../clients/common/nm-meta-setting-desc.c:7929
+#: ../clients/common/nm-meta-setting-desc.c:7962
msgid "802-1x settings"
msgstr "Параметри 802-1x"
-#: ../clients/common/nm-meta-setting-desc.c:7930
+#: ../clients/common/nm-meta-setting-desc.c:7963
#: ../src/devices/adsl/nm-device-adsl.c:117
msgid "ADSL connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ ADSL"
-#: ../clients/common/nm-meta-setting-desc.c:7931
+#: ../clients/common/nm-meta-setting-desc.c:7964
msgid "bluetooth connection"
msgstr "з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ bluetooth"
-#: ../clients/common/nm-meta-setting-desc.c:7932
+#: ../clients/common/nm-meta-setting-desc.c:7965
msgid "Bond device"
msgstr "ПриÑтрій Bond"
-#: ../clients/common/nm-meta-setting-desc.c:7933
+#: ../clients/common/nm-meta-setting-desc.c:7966
msgid "Bridge device"
msgstr "ПриÑтрій міÑтка"
-#: ../clients/common/nm-meta-setting-desc.c:7934
+#: ../clients/common/nm-meta-setting-desc.c:7967
msgid "Bridge port"
msgstr "Порт міÑтка"
-#: ../clients/common/nm-meta-setting-desc.c:7935
+#: ../clients/common/nm-meta-setting-desc.c:7968
msgid "CDMA mobile broadband connection"
msgstr "мобільне широкоÑмугове з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ CDMA"
-#: ../clients/common/nm-meta-setting-desc.c:7936
+#: ../clients/common/nm-meta-setting-desc.c:7969
msgid "General settings"
msgstr "Загальні параметри"
-#: ../clients/common/nm-meta-setting-desc.c:7937
+#: ../clients/common/nm-meta-setting-desc.c:7970
msgid "DCB settings"
msgstr "Параметри DCB"
-#: ../clients/common/nm-meta-setting-desc.c:7938
+#: ../clients/common/nm-meta-setting-desc.c:7971
msgid "Dummy settings"
msgstr "Фіктивні параметри"
-#: ../clients/common/nm-meta-setting-desc.c:7939
+#: ../clients/common/nm-meta-setting-desc.c:7972
msgid "Ethtool settings"
msgstr "Параметри Ethtool"
-#: ../clients/common/nm-meta-setting-desc.c:7940
+#: ../clients/common/nm-meta-setting-desc.c:7973
msgid "Generic settings"
msgstr "Загальні параметри"
-#: ../clients/common/nm-meta-setting-desc.c:7941
+#: ../clients/common/nm-meta-setting-desc.c:7974
msgid "GSM mobile broadband connection"
msgstr "мобільне широкоÑмугове з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ GSM"
-#: ../clients/common/nm-meta-setting-desc.c:7942
+#: ../clients/common/nm-meta-setting-desc.c:7975
+msgid "Hostname settings"
+msgstr "Параметри назви вузла"
+
+#: ../clients/common/nm-meta-setting-desc.c:7976
#: ../src/devices/nm-device-infiniband.c:161
msgid "InfiniBand connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ InfiniBand"
-#: ../clients/common/nm-meta-setting-desc.c:7943
+#: ../clients/common/nm-meta-setting-desc.c:7977
msgid "IPv4 protocol"
msgstr "Протокол IPv4"
-#: ../clients/common/nm-meta-setting-desc.c:7944
+#: ../clients/common/nm-meta-setting-desc.c:7978
msgid "IPv6 protocol"
msgstr "Протокол IPv6"
-#: ../clients/common/nm-meta-setting-desc.c:7945
+#: ../clients/common/nm-meta-setting-desc.c:7979
msgid "IP-tunnel settings"
msgstr "Параметри IP-тунелюваннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:7946
+#: ../clients/common/nm-meta-setting-desc.c:7980
msgid "MACsec connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ MACsec"
-#: ../clients/common/nm-meta-setting-desc.c:7947
+#: ../clients/common/nm-meta-setting-desc.c:7981
msgid "macvlan connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ MACVLAN"
-#: ../clients/common/nm-meta-setting-desc.c:7948
+#: ../clients/common/nm-meta-setting-desc.c:7982
msgid "Match"
msgstr "ВідповідніÑÑ‚ÑŒ"
-#: ../clients/common/nm-meta-setting-desc.c:7949
+#: ../clients/common/nm-meta-setting-desc.c:7983
msgid "OLPC Mesh connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ OLPC Mesh"
-#: ../clients/common/nm-meta-setting-desc.c:7950
+#: ../clients/common/nm-meta-setting-desc.c:7984
msgid "Open vSwitch bridge settings"
msgstr "Параметри міÑтка Open vSwitch"
-#: ../clients/common/nm-meta-setting-desc.c:7951
+#: ../clients/common/nm-meta-setting-desc.c:7985
msgid "Open vSwitch DPDK interface settings"
msgstr "Параметри інтерфейÑу Open vSwitch DPDK"
-#: ../clients/common/nm-meta-setting-desc.c:7952
+#: ../clients/common/nm-meta-setting-desc.c:7986
+msgid "OVS External IDs"
+msgstr "Зовнішні ідентифікатори OVS"
+
+#: ../clients/common/nm-meta-setting-desc.c:7987
msgid "Open vSwitch interface settings"
msgstr "Параметри інтерфейÑу Open vSwitch"
-#: ../clients/common/nm-meta-setting-desc.c:7953
+#: ../clients/common/nm-meta-setting-desc.c:7988
msgid "Open vSwitch patch interface settings"
msgstr "Параметри інтерфейÑу латок Open vSwitch"
-#: ../clients/common/nm-meta-setting-desc.c:7954
+#: ../clients/common/nm-meta-setting-desc.c:7989
msgid "Open vSwitch port settings"
msgstr "Параметри портів Open vSwitch"
-#: ../clients/common/nm-meta-setting-desc.c:7955
+#: ../clients/common/nm-meta-setting-desc.c:7990
msgid "PPP settings"
msgstr "Параметри PPP"
-#: ../clients/common/nm-meta-setting-desc.c:7956
+#: ../clients/common/nm-meta-setting-desc.c:7991
msgid "PPPoE"
msgstr "PPPoE"
-#: ../clients/common/nm-meta-setting-desc.c:7957
+#: ../clients/common/nm-meta-setting-desc.c:7992
msgid "Proxy"
msgstr "ПрокÑÑ–"
-#: ../clients/common/nm-meta-setting-desc.c:7958
+#: ../clients/common/nm-meta-setting-desc.c:7993
msgid "Serial settings"
msgstr "Параметри поÑлідовного з'єднаннÑ"
-#: ../clients/common/nm-meta-setting-desc.c:7959
+#: ../clients/common/nm-meta-setting-desc.c:7994
msgid "SR-IOV settings"
msgstr "Параметри SR-IOV"
-#: ../clients/common/nm-meta-setting-desc.c:7960
+#: ../clients/common/nm-meta-setting-desc.c:7995
msgid "Traffic controls"
msgstr "ЗаÑоби ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð¼Ñ–Ð½Ð¾Ð¼ даними"
-#: ../clients/common/nm-meta-setting-desc.c:7961
+#: ../clients/common/nm-meta-setting-desc.c:7996
msgid "Team device"
msgstr "ПриÑтрій Team"
-#: ../clients/common/nm-meta-setting-desc.c:7962
+#: ../clients/common/nm-meta-setting-desc.c:7997
msgid "Team port"
msgstr "Порт Team"
-#: ../clients/common/nm-meta-setting-desc.c:7963
+#: ../clients/common/nm-meta-setting-desc.c:7998
msgid "Tun device"
msgstr "ПриÑтрій TUN"
-#: ../clients/common/nm-meta-setting-desc.c:7964
+#: ../clients/common/nm-meta-setting-desc.c:7999
msgid "User settings"
msgstr "Параметри кориÑтувача"
-#: ../clients/common/nm-meta-setting-desc.c:7965
+#: ../clients/common/nm-meta-setting-desc.c:8000
+#: ../src/devices/nm-device-veth.c:138
+#| msgid "VPN connection"
+msgid "Veth connection"
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ veth"
+
+#: ../clients/common/nm-meta-setting-desc.c:8001
#: ../src/devices/nm-device-vlan.c:400
msgid "VLAN connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ VLAN"
-#: ../clients/common/nm-meta-setting-desc.c:7966 ../src/nm-manager.c:5837
+#: ../clients/common/nm-meta-setting-desc.c:8002 ../src/nm-manager.c:5866
msgid "VPN connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ VPN"
-#: ../clients/common/nm-meta-setting-desc.c:7967
+#: ../clients/common/nm-meta-setting-desc.c:8003
#: ../src/devices/nm-device-vrf.c:181
msgid "VRF connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ VRF"
-#: ../clients/common/nm-meta-setting-desc.c:7968
-#: ../src/devices/nm-device-vxlan.c:380
+#: ../clients/common/nm-meta-setting-desc.c:8004
+#: ../src/devices/nm-device-vxlan.c:382
msgid "VXLAN connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ VXLAN"
-#: ../clients/common/nm-meta-setting-desc.c:7969
+#: ../clients/common/nm-meta-setting-desc.c:8005
msgid "Wi-Fi P2P connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ P2P Wi-Fi"
-#: ../clients/common/nm-meta-setting-desc.c:7970
+#: ../clients/common/nm-meta-setting-desc.c:8006
msgid "WiMAX connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ WiMAX"
-#: ../clients/common/nm-meta-setting-desc.c:7971
+#: ../clients/common/nm-meta-setting-desc.c:8007
msgid "Wired Ethernet"
msgstr "Дротовий Ethernet"
-#: ../clients/common/nm-meta-setting-desc.c:7972
+#: ../clients/common/nm-meta-setting-desc.c:8008
msgid "WireGuard VPN settings"
msgstr "Параметри VPN WireGuard"
-#: ../clients/common/nm-meta-setting-desc.c:7973
+#: ../clients/common/nm-meta-setting-desc.c:8009
msgid "Wi-Fi connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Wi-Fi"
-#: ../clients/common/nm-meta-setting-desc.c:7974
+#: ../clients/common/nm-meta-setting-desc.c:8010
msgid "Wi-Fi security settings"
msgstr "Параметри захиÑту Wi-Fi"
-#: ../clients/common/nm-meta-setting-desc.c:7975
+#: ../clients/common/nm-meta-setting-desc.c:8011
msgid "WPAN settings"
msgstr "Параметри WPAN"
-#: ../clients/common/nm-meta-setting-desc.c:8354
+#: ../clients/common/nm-meta-setting-desc.c:8411
msgid "name"
msgstr "назва"
@@ -7004,7 +7012,7 @@ msgstr ""
#: ../clients/common/settings-docs.h.in:108
#: ../clients/common/settings-docs.h.in:150
#: ../clients/common/settings-docs.h.in:200
-#: ../clients/common/settings-docs.h.in:325
+#: ../clients/common/settings-docs.h.in:330
msgid "Flags indicating how to handle the \"password\" property."
msgstr "Прапорці, Ñкі позначають, Ñк оброблÑти влаÑтивіÑÑ‚ÑŒ «password»."
@@ -7969,7 +7977,7 @@ msgstr ""
#: ../clients/common/settings-docs.h.in:147
#: ../clients/common/settings-docs.h.in:196
-#: ../clients/common/settings-docs.h.in:207
+#: ../clients/common/settings-docs.h.in:211
msgid ""
"If non-zero, only transmit packets of the specified size or smaller, "
"breaking larger packets up into multiple frames."
@@ -8312,23 +8320,21 @@ msgid ""
"similar to \"${CONNECTION}\" and uses a unique, fixed ID for the connection."
msgstr ""
"Відповідає ідентифікатору з'єднаннÑ, Ñкий викориÑтовуєтьÑÑ Ð· різною метою. "
-"Він надає змогу налаштовувати декілька профілів Ð´Ð»Ñ Ñпільного викориÑтаннÑ"
-" ідентифікатора. "
-"Крім того, Ñтабільний ідентифікатор може міÑтити Ñимволи-замінники, вміÑÑ‚ "
-"Ñких визначаєтьÑÑ Ñƒ динамічному режимі Ñ– визначеним чином залежить від"
-" контекÑту. Стабільні ідентифікатори викориÑтовуютьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ "
-"Ñтабільних у IPv6 приватних Ð°Ð´Ñ€ÐµÑ Ð·Ð° допомогою"
-" ipv6.addr-gen-mode=stable-privacy. Він також викориÑтовуютьÑÑ Ñк початкове"
-" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ "
-"клонованих MAC-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ethernet.cloned-mac-address=stable Ñ– wifi.cloned-"
-"mac-address=stable. Він також викориÑтовуєтьÑÑ Ñк ідентифікатор клієнта DHCP "
-"з ipv4.dhcp-client-id=stable Ñ– Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ DUID DHCP з ipv6."
-"dhcp-duid=stable-[llt,ll,uuid]. Зауважте, що, залежно від контекÑту, де його "
-"викориÑтано, до алгоритму Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° може бути включено інші "
-"параметри. Ðаприклад, чаÑто викориÑтовуєтьÑÑ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ð¹ ключ вузла, щоб у "
-"різних ÑиÑтем були різні ідентифікатори. Якщо вказано ipv6.addr-gen-"
-"mode=stable-privacy, до обчиÑÐ»ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ включено назву приÑтрою, щоб різні "
-"інтерфейÑи мали різні адреÑи. Символ «$» Ñ” Ñпеціальним Ñимволом Ð´Ð»Ñ "
+"Він надає змогу налаштовувати декілька профілів Ð´Ð»Ñ Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ "
+"ідентифікатора. Крім того, Ñтабільний ідентифікатор може міÑтити Ñимволи-"
+"замінники, вміÑÑ‚ Ñких визначаєтьÑÑ Ñƒ динамічному режимі Ñ– визначеним чином "
+"залежить від контекÑту. Стабільні ідентифікатори викориÑтовуютьÑÑ Ð´Ð»Ñ "
+"ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñтабільних у IPv6 приватних Ð°Ð´Ñ€ÐµÑ Ð·Ð° допомогою ipv6.addr-gen-"
+"mode=stable-privacy. Він також викориÑтовуютьÑÑ Ñк початкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ "
+"ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ñ… MAC-Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ ethernet.cloned-mac-address=stable Ñ– wifi."
+"cloned-mac-address=stable. Він також викориÑтовуєтьÑÑ Ñк ідентифікатор "
+"клієнта DHCP з ipv4.dhcp-client-id=stable Ñ– Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ DUID "
+"DHCP з ipv6.dhcp-duid=stable-[llt,ll,uuid]. Зауважте, що, залежно від "
+"контекÑту, де його викориÑтано, до алгоритму Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° може "
+"бути включено інші параметри. Ðаприклад, чаÑто викориÑтовуєтьÑÑ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ð¹ ключ "
+"вузла, щоб у різних ÑиÑтем були різні ідентифікатори. Якщо вказано ipv6.addr-"
+"gen-mode=stable-privacy, до обчиÑÐ»ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ включено назву приÑтрою, щоб "
+"різні інтерфейÑи мали різні адреÑи. Символ «$» Ñ” Ñпеціальним Ñимволом Ð´Ð»Ñ "
"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ підÑтавлÑÐ½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸. У поточній верÑÑ–Ñ— "
"передбачено підтримку ідентифікаторів «${CONNECTION}», «${DEVICE}», "
"«${MAC}», «${BOOT}», «${RANDOM}». ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ†Ð¸Ñ… ідентифікаторів "
@@ -8694,6 +8700,78 @@ msgstr ""
#: ../clients/common/settings-docs.h.in:206
msgid ""
+"Whether the system hostname can be determined from DHCP on this connection. "
+"When set to NM_TERNARY_DEFAULT (-1), the value from global configuration is "
+"used. If the property doesn't have a value in the global configuration, "
+"NetworkManager assumes the value to be NM_TERNARY_TRUE (1)."
+msgstr ""
+"Визначає, чи може бути визначено назву вузла ÑиÑтеми з DHCP у цьому "
+"з'єднанні. Якщо вÑтановити NM_TERNARY_DEFAULT (-1), буде викориÑтано "
+"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð· загальних налаштувань. Якщо влаÑтивіÑÑ‚ÑŒ не має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ "
+"загальних налаштуваннÑÑ…, NetworkManager припуÑкає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NM_TERNARY_TRUE "
+"(1)."
+
+#: ../clients/common/settings-docs.h.in:207
+msgid ""
+"Whether the system hostname can be determined from reverse DNS lookup of "
+"addresses on this device. When set to NM_TERNARY_DEFAULT (-1), the value "
+"from global configuration is used. If the property doesn't have a value in "
+"the global configuration, NetworkManager assumes the value to be "
+"NM_TERNARY_TRUE (1)."
+msgstr ""
+"Визначає, чи може бути визначено назву вузла ÑиÑтеми з оберненого пошуку DNS "
+"Ð°Ð´Ñ€ÐµÑ Ñ†ÑŒÐ¾Ð³Ð¾ приÑтрою. Якщо вÑтановити NM_TERNARY_DEFAULT (-1), буде "
+"викориÑтано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð· загальних налаштувань. Якщо влаÑтивіÑÑ‚ÑŒ не має "
+"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ загальних налаштуваннÑÑ…, NetworkManager припуÑкає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
+"NM_TERNARY_TRUE (1)."
+
+#: ../clients/common/settings-docs.h.in:208
+msgid ""
+"If set to NM_TERNARY_TRUE (1), NetworkManager attempts to get the hostname "
+"via DHCPv4/DHCPv6 or reverse DNS lookup on this device only when the device "
+"has the default route for the given address family (IPv4/IPv6). If set to "
+"NM_TERNARY_FALSE (0), the hostname can be set from this device even if it "
+"doesn't have the default route. When set to NM_TERNARY_DEFAULT (-1), the "
+"value from global configuration is used. If the property doesn't have a "
+"value in the global configuration, NetworkManager assumes the value to be "
+"NM_TERNARY_TRUE (1)."
+msgstr ""
+"Якщо вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NM_TERNARY_TRUE (1), NetworkManager намагатиметьÑÑ "
+"отримати назву вузла за допомогою DHCPv4/DHCPv6 або зворотного пошуку DNS на "
+"цьому приÑтрої, Ñкщо приÑтрій має типовий маршрут Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¾Ð³Ð¾ ÑімейÑтва "
+"Ð°Ð´Ñ€ÐµÑ (IPv4/IPv6). Якщо вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NM_TERNARY_FALSE (0), назву "
+"вузла може бути вÑтановлено з цього приÑтрою, навіть Ñкщо Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾ немає "
+"типового маршруту. Якщо вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NM_TERNARY_DEFAULT (-1), буде "
+"викориÑтано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð· загальних налаштувань. Якщо у влаÑтивоÑÑ‚Ñ– немає "
+"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ загальних налаштуваннÑÑ…, NetworkManager припуÑкає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
+"NM_TERNARY_TRUE (1)."
+
+#: ../clients/common/settings-docs.h.in:209
+msgid ""
+"The relative priority of this connection to determine the system hostname. A "
+"lower numerical value is better (higher priority). A connection with higher "
+"priority is considered before connections with lower priority. If the value "
+"is zero, it can be overridden by a global value from NetworkManager "
+"configuration. If the property doesn't have a value in the global "
+"configuration, the value is assumed to be 100. Negative values have the "
+"special effect of excluding other connections with a greater numerical "
+"priority value; so in presence of at least one negative priority, only "
+"connections with the lowest priority value will be used to determine the "
+"hostname."
+msgstr ""
+"ВідноÑна пріоритетніÑÑ‚ÑŒ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ визначенні назви вузла ÑиÑтеми. Чим "
+"меншим Ñ” чиÑлове значеннÑ, тим вищою Ñ” пріоритетніÑÑ‚ÑŒ. З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· вищою "
+"пріоритетніÑÑ‚ÑŽ буде розглÑнуто перед з'єднаннÑми із меншою пріоритетніÑÑ‚ÑŽ. "
+"Якщо Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” нульовим, його може бути перевизначено загальним значеннÑм з "
+"налаштувань NetworkManager. Якщо у влаÑтивоÑÑ‚Ñ– немає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ загальних "
+"налаштуваннÑÑ…, буде викориÑтано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 100. Від'ємні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´ÑÑ‚ÑŒ "
+"до оÑобливої поведінки: Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ–Ð½ÑˆÐ¸Ñ… з'єднань із більшим чиÑловим "
+"значеннÑм пріоритетноÑÑ‚Ñ–. Отже, Ñкщо Ñ–Ñнує принаймні один Ð·Ð°Ð¿Ð¸Ñ Ñ–Ð· від'ємною "
+"пріоритетніÑÑ‚ÑŽ, Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ вузла буде викориÑтано лише з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ "
+"із найнижчим значеннÑм пріоритетноÑÑ‚Ñ–."
+
+#: ../clients/common/settings-docs.h.in:210
+msgid ""
"If specified, this connection will only apply to the IPoIB device whose "
"permanent MAC address matches. This property does not change the MAC address "
"of the device (i.e. MAC spoofing)."
@@ -8702,7 +8780,7 @@ msgstr ""
"відповідною Ñталою адреÑою MAC. Ð¦Ñ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŒ не змінює MAC-адреÑи приÑтрою "
"(таку зміну називають підміною MAC)."
-#: ../clients/common/settings-docs.h.in:208
+#: ../clients/common/settings-docs.h.in:212
msgid ""
"The InfiniBand P_Key to use for this device. A value of -1 means to use the "
"default P_Key (aka \"the P_Key at index 0\"). Otherwise, it is a 16-bit "
@@ -8713,7 +8791,7 @@ msgstr ""
"Інші Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути вказано у форматі 16-бітового цілого чиÑла без знаку, "
"Ñтарший біт Ñкого дорівнює одиниці, Ñкщо P_Key Ñ” ключем «повного членÑтва»."
-#: ../clients/common/settings-docs.h.in:209
+#: ../clients/common/settings-docs.h.in:213
msgid ""
"The interface name of the parent device of this device. Normally NULL, but "
"if the \"p_key\" property is set, then you must specify the base device by "
@@ -8724,14 +8802,14 @@ msgstr ""
"вказати базовий приÑтрій або вÑтановленнÑм Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ–, "
"або вÑтановленнÑм Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «mac-address»."
-#: ../clients/common/settings-docs.h.in:210
+#: ../clients/common/settings-docs.h.in:214
msgid ""
"The IP-over-InfiniBand transport mode. Either \"datagram\" or \"connected\"."
msgstr ""
"Режим Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ IP-over-InfiniBand. Можливі значеннÑ: «datagram» або "
"«connected»."
-#: ../clients/common/settings-docs.h.in:211
+#: ../clients/common/settings-docs.h.in:215
msgid ""
"How many additional levels of encapsulation are permitted to be prepended to "
"packets. This property applies only to IPv6 tunnels."
@@ -8739,7 +8817,7 @@ msgstr ""
"КількіÑÑ‚ÑŒ додаткових рівнів вкладеноÑÑ‚Ñ–, Ñкі дозволено допиÑувати до "
"пакетів. Цю влаÑтивіÑÑ‚ÑŒ ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ тунелів IPv6."
-#: ../clients/common/settings-docs.h.in:212
+#: ../clients/common/settings-docs.h.in:216
msgid ""
"Tunnel flags. Currently, the following values are supported: "
"NM_IP_TUNNEL_FLAG_IP6_IGN_ENCAP_LIMIT (0x1), "
@@ -8757,14 +8835,14 @@ msgstr ""
"(0x10), NM_IP_TUNNEL_FLAG_IP6_USE_ORIG_FWMARK (0x20). Ці Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” "
"коректними лише Ð´Ð»Ñ Ñ‚ÑƒÐ½ÐµÐ»Ñ–Ð² IPv6."
-#: ../clients/common/settings-docs.h.in:213
+#: ../clients/common/settings-docs.h.in:217
msgid ""
"The flow label to assign to tunnel packets. This property applies only to "
"IPv6 tunnels."
msgstr ""
"Мітка потоку Ð´Ð»Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² тунелю. Ð¦Ñ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŒ ÑтоÑуєтьÑÑ Ð»Ð¸ÑˆÐµ тунелів IPv6."
-#: ../clients/common/settings-docs.h.in:214
+#: ../clients/common/settings-docs.h.in:218
msgid ""
"The key used for tunnel input packets; the property is valid only for "
"certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
@@ -8773,7 +8851,7 @@ msgstr ""
"лише Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ… режимів роботи тунелю (GRE, IP6GRE). Якщо порожній, ключ не "
"викориÑтовуєтьÑÑ."
-#: ../clients/common/settings-docs.h.in:215
+#: ../clients/common/settings-docs.h.in:219
msgid ""
"The local endpoint of the tunnel; the value can be empty, otherwise it must "
"contain an IPv4 or IPv6 address."
@@ -8781,7 +8859,7 @@ msgstr ""
"Локальна кінцева точка тунелю; Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути порожнім або має міÑтити "
"адреÑу IPv4 або IPv6."
-#: ../clients/common/settings-docs.h.in:216
+#: ../clients/common/settings-docs.h.in:220
msgid ""
"The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or "
"NM_IP_TUNNEL_MODE_GRE (2)."
@@ -8789,7 +8867,7 @@ msgstr ""
"Режим тунелюваннÑ, наприклад NM_IP_TUNNEL_MODE_IPIP (1) або "
"NM_IP_TUNNEL_MODE_GRE (2)."
-#: ../clients/common/settings-docs.h.in:217
+#: ../clients/common/settings-docs.h.in:221
msgid ""
"If non-zero, only transmit packets of the specified size or smaller, "
"breaking larger packets up into multiple fragments."
@@ -8797,7 +8875,7 @@ msgstr ""
"Якщо має ненульове значеннÑ, передавати пакети лише вказаного або меншого "
"розміру, розбиваючи великі пакети на декілька фрагментів."
-#: ../clients/common/settings-docs.h.in:218
+#: ../clients/common/settings-docs.h.in:222
msgid ""
"The key used for tunnel output packets; the property is valid only for "
"certain tunnel modes (GRE, IP6GRE). If empty, no key is used."
@@ -8806,7 +8884,7 @@ msgstr ""
"чинною лише Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ… режимів роботи тунелю (GRE, IP6GRE). Якщо порожній, "
"ключ не викориÑтовуєтьÑÑ."
-#: ../clients/common/settings-docs.h.in:219
+#: ../clients/common/settings-docs.h.in:223
msgid ""
"If given, specifies the parent interface name or parent connection UUID the "
"new device will be bound to so that tunneled packets will only be routed via "
@@ -8816,18 +8894,18 @@ msgstr ""
"з'єднаннÑ, до Ñкого буде прив'Ñзано новий приÑтрій так, що тунельовані "
"пакети маршрутизуватимутьÑÑ Ð»Ð¸ÑˆÐµ крізь цей інтерфейÑ."
-#: ../clients/common/settings-docs.h.in:220
+#: ../clients/common/settings-docs.h.in:224
msgid "Whether to enable Path MTU Discovery on this tunnel."
msgstr "Визначає, чи Ñлід вмикати Path MTU Discovery Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ тунелю."
-#: ../clients/common/settings-docs.h.in:221
+#: ../clients/common/settings-docs.h.in:225
msgid ""
"The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 "
"address."
msgstr ""
"Віддалена кінцева точка тунелю; Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” міÑтити адреÑу IPv4 або IPv6."
-#: ../clients/common/settings-docs.h.in:222
+#: ../clients/common/settings-docs.h.in:226
msgid ""
"The type of service (IPv4) or traffic class (IPv6) field to be set on "
"tunneled packets."
@@ -8835,7 +8913,7 @@ msgstr ""
"Поле типу Ñлужби (IPv4) або клаÑу Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… (IPv6), Ñке Ñлід "
"вÑтановити Ð´Ð»Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¸Ñ… пакетів."
-#: ../clients/common/settings-docs.h.in:223
+#: ../clients/common/settings-docs.h.in:227
msgid ""
"The TTL to assign to tunneled packets. 0 is a special value meaning that "
"packets inherit the TTL value."
@@ -8843,13 +8921,13 @@ msgstr ""
"Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TTL, Ñке Ñлід призначити Ð´Ð»Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¸Ñ… пакетів. 0 — Ñпеціальне "
"значеннÑ, Ñке означає, що пакети уÑпадковують Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TTL."
-#: ../clients/common/settings-docs.h.in:224
-#: ../clients/common/settings-docs.h.in:249
+#: ../clients/common/settings-docs.h.in:228
+#: ../clients/common/settings-docs.h.in:253
msgid "Array of IP addresses."
msgstr "МаÑив IP-адреÑ."
-#: ../clients/common/settings-docs.h.in:225
-#: ../clients/common/settings-docs.h.in:250
+#: ../clients/common/settings-docs.h.in:229
+#: ../clients/common/settings-docs.h.in:254
msgid ""
"Timeout in milliseconds used to check for the presence of duplicate IP "
"addresses on the network. If an address conflict is detected, the "
@@ -8866,7 +8944,7 @@ msgstr ""
"перевищує нуль, вважатиметьÑÑ Ñ‡Ð°Ñом Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ міліÑекундах. Цю "
"влаÑтивіÑÑ‚ÑŒ у поточній верÑÑ–Ñ— реалізовано лише Ð´Ð»Ñ IPv4."
-#: ../clients/common/settings-docs.h.in:226
+#: ../clients/common/settings-docs.h.in:230
msgid ""
"A string sent to the DHCP server to identify the local machine which the "
"DHCP server may use to customize the DHCP lease and options. When the "
@@ -8910,7 +8988,7 @@ msgstr ""
"налаштоване значеннÑ. Якщо Ñ– це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ налаштовано, типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"залежатиме від додатка DHCP."
-#: ../clients/common/settings-docs.h.in:227
+#: ../clients/common/settings-docs.h.in:231
msgid ""
"If the \"dhcp-send-hostname\" property is TRUE, then the specified FQDN will "
"be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
@@ -8920,8 +8998,8 @@ msgstr ""
"адреÑи до Ñервера DHCP буде надіÑлано вказану FDQN. Цю влаÑтивіÑÑ‚ÑŒ не можна "
"викориÑтовувати разом із влаÑтивіÑÑ‚ÑŽ «dhcp-hostname»."
-#: ../clients/common/settings-docs.h.in:228
-#: ../clients/common/settings-docs.h.in:252
+#: ../clients/common/settings-docs.h.in:232
+#: ../clients/common/settings-docs.h.in:256
msgid ""
"If the \"dhcp-send-hostname\" property is TRUE, then the specified name will "
"be sent to the DHCP server when acquiring a lease. This property and \"dhcp-"
@@ -8931,8 +9009,8 @@ msgstr ""
"адреÑи до Ñервера DHCP буде надіÑлано вказану назву. Цю влаÑтивіÑÑ‚ÑŒ не можна "
"викориÑтовувати разом із влаÑтивіÑÑ‚ÑŽ «dhcp-fqdn»."
-#: ../clients/common/settings-docs.h.in:229
-#: ../clients/common/settings-docs.h.in:253
+#: ../clients/common/settings-docs.h.in:233
+#: ../clients/common/settings-docs.h.in:257
msgid ""
"Flags for the DHCP hostname and FQDN. Currently, this property only includes "
"flags to control the FQDN flags set in the DHCP FQDN option. Supported FQDN "
@@ -8969,8 +9047,8 @@ msgstr ""
"NM_DHCP_HOSTNAME_FLAG_NONE (0x0), у запитах DHCP надÑилатимутьÑÑ Ñтандартні "
"прапорці FQDN, опиÑані вище."
-#: ../clients/common/settings-docs.h.in:230
-#: ../clients/common/settings-docs.h.in:254
+#: ../clients/common/settings-docs.h.in:234
+#: ../clients/common/settings-docs.h.in:258
msgid ""
"A string containing the \"Identity Association Identifier\" (IAID) used by "
"the DHCP client. The property is a 32-bit decimal value or a special value "
@@ -8999,8 +9077,8 @@ msgstr ""
"буде проігноровано у dhclient, Ñкий завжди визначає IAID на оÑнові MAC-"
"адреÑи."
-#: ../clients/common/settings-docs.h.in:231
-#: ../clients/common/settings-docs.h.in:255
+#: ../clients/common/settings-docs.h.in:235
+#: ../clients/common/settings-docs.h.in:259
msgid ""
"Array of servers from which DHCP offers must be rejected. This property is "
"useful to avoid getting a lease from misconfigured or rogue servers. For "
@@ -9015,8 +9093,8 @@ msgstr ""
"\"192.168.122.0/24\"). У поточній верÑÑ–Ñ— цю влаÑтивіÑÑ‚ÑŒ не реалізовано Ð´Ð»Ñ "
"DHCPv6."
-#: ../clients/common/settings-docs.h.in:232
-#: ../clients/common/settings-docs.h.in:256
+#: ../clients/common/settings-docs.h.in:236
+#: ../clients/common/settings-docs.h.in:260
msgid ""
"If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some "
"DHCP servers use this hostname to update DNS databases, essentially "
@@ -9031,8 +9109,8 @@ msgstr ""
"влаÑтивоÑÑ‚Ñ– вказано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TRUE, буде надіÑлано поточну Ñтану назву вузла "
"комп'ютера."
-#: ../clients/common/settings-docs.h.in:233
-#: ../clients/common/settings-docs.h.in:257
+#: ../clients/common/settings-docs.h.in:237
+#: ../clients/common/settings-docs.h.in:261
msgid ""
"A timeout for a DHCP transaction in seconds. If zero (the default), a "
"globally configured default is used. If still unspecified, a device specific "
@@ -9046,7 +9124,7 @@ msgstr ""
"Ñекунд). Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 2147483647 (MAXINT32), Ñкщо Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” "
"бути необмеженим."
-#: ../clients/common/settings-docs.h.in:234
+#: ../clients/common/settings-docs.h.in:238
msgid ""
"The Vendor Class Identifier DHCP option (60). Special characters in the data "
"string may be escaped using C-style escapes, nevertheless this property "
@@ -9062,13 +9140,13 @@ msgstr ""
"визначити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–, цей параметр DHCP не буде надіÑлано на "
"Ñервер. Реалізовано з верÑÑ–Ñ— 1.28"
-#: ../clients/common/settings-docs.h.in:235
-#: ../clients/common/settings-docs.h.in:258
+#: ../clients/common/settings-docs.h.in:239
+#: ../clients/common/settings-docs.h.in:262
msgid "Array of IP addresses of DNS servers."
msgstr "МаÑив IP-Ð°Ð´Ñ€ÐµÑ Ñерверів DNS."
-#: ../clients/common/settings-docs.h.in:236
-#: ../clients/common/settings-docs.h.in:259
+#: ../clients/common/settings-docs.h.in:240
+#: ../clients/common/settings-docs.h.in:263
msgid ""
"Array of DNS options as described in man 5 resolv.conf. NULL means that the "
"options are unset and left at the default. In this case NetworkManager will "
@@ -9092,34 +9170,8 @@ msgstr ""
"уваги, лише Ñкщо профіль вказує Ñервери назв у resolv.conf Ñ– Ð´Ð»Ñ Ð²ÑÑ–Ñ… "
"відповідних профілів увімкнено «trust-ad»."
-#: ../clients/common/settings-docs.h.in:237
-#: ../clients/common/settings-docs.h.in:260
-#| msgid ""
-#| "DNS servers priority. The relative priority for DNS servers specified by "
-#| "this setting. A lower value is better (higher priority). Zero selects a "
-#| "globally configured default value. If the latter is missing or zero too, "
-#| "it defaults to 50 for VPNs (including WireGuard) and 100 for other "
-#| "connections. Note that the priority is to order DNS settings for multiple "
-#| "active connections. It does not disambiguate multiple DNS servers within "
-#| "the same connection profile. When using dns=default, servers with higher "
-#| "priority will be on top of resolv.conf. To prioritize a given server "
-#| "over another one within the same connection, just specify them in the "
-#| "desired order. When multiple devices have configurations with the same "
-#| "priority, VPNs will be considered first, then devices with the best "
-#| "(lowest metric) default route and then all other devices. Negative "
-#| "values have the special effect of excluding other configurations with a "
-#| "greater priority value; so in presence of at least one negative priority, "
-#| "only DNS servers from connections with the lowest priority value will be "
-#| "used. When using a DNS resolver that supports Conditional Forwarding as "
-#| "dns=dnsmasq or dns=systemd-resolved, each connection is used to query "
-#| "domains in its search list. Queries for domains not present in any "
-#| "search list are routed through connections having the '~.' special "
-#| "wildcard domain, which is added automatically to connections with the "
-#| "default route (or can be added manually). When multiple connections "
-#| "specify the same domain, the one with the highest priority (lowest "
-#| "numerical value) wins. If a connection specifies a domain which is "
-#| "subdomain of another domain with a negative DNS priority value, the "
-#| "subdomain is ignored."
+#: ../clients/common/settings-docs.h.in:241
+#: ../clients/common/settings-docs.h.in:264
msgid ""
"DNS servers priority. The relative priority for DNS servers specified by "
"this setting. A lower numerical value is better (higher priority). Negative "
@@ -9129,7 +9181,7 @@ msgid ""
"will be used. To avoid all DNS leaks, set the priority of the profile that "
"should be used to the most negative value of all active connections "
"profiles. Zero selects a globally configured default value. If the latter is "
-"missing or zero too, it defaults to -50 for VPNs (including WireGuard) and "
+"missing or zero too, it defaults to 50 for VPNs (including WireGuard) and "
"100 for other connections. Note that the priority is to order DNS settings "
"for multiple active connections. It does not disambiguate multiple DNS "
"servers within the same connection profile. When multiple devices have "
@@ -9159,56 +9211,49 @@ msgid ""
"of the desired interface are configured."
msgstr ""
"ПріоритетніÑÑ‚ÑŒ Ñерверів DNS. Цим параметром визначаєтьÑÑ Ð²Ñ–Ð´Ð½Ð¾Ñна "
-"пріоритетніÑÑ‚ÑŒ Ñерверів DNS. Менше Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ” вищу пріоритетніÑÑ‚ÑŒ."
-" Від'ємні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ â€” оÑобливі: вони виключають інші конфігурації із більшим"
-" чиÑловим значеннÑм пріоритетноÑÑ‚Ñ–. Тому, Ñкщо Ñ” принаймні одне від'ємне"
-" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ–, буде викориÑтано лише Ñервери DNS зі з'єднань із"
-" найнижчим значеннÑм пріоритетноÑÑ‚Ñ–. Щоб уникнути уÑÑ–Ñ… витоків DNS,"
-" вÑтановіть пріоритетніÑÑ‚ÑŒ профілю, Ñкий Ñлід викориÑтовувати, у найбільше за"
-" модулем від'ємне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· уÑÑ–Ñ… активних профілів з'єднань. Ðульове"
-" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” налаштованому на загальному рівні типовому "
-"значенню. Якщо такого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” або воно Ñ” теж нульовим, типовим "
-"значеннÑм вважатиметьÑÑ 50 Ð´Ð»Ñ VPN (включно із WireGuard) Ñ– 100 Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… "
-"з'єднань. Зауважте, що пріоритетніÑÑ‚ÑŒ призначено Ð´Ð»Ñ ÑƒÐ¿Ð¾Ñ€ÑÐ´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ "
-"параметрів DNS Ð´Ð»Ñ Ñитуації із декількома активними з'єднаннÑми. Вона не "
-"призводить до двозначноÑÑ‚Ñ– при виборі із декількох Ñерверів DNS у межах "
-"одного профілю з'єднаннÑ. Якщо однакову пріоритетніÑÑ‚ÑŒ налаштовано длÑ"
-" декількох приÑтроїв, Ñпочатку буде взÑто до уваги VPN, потім приÑтрої із"
-" найкращим типовим маршрутом (маршрутом із найнижчою метрикою), а потім уÑÑ–"
-" інші приÑтрої. Якщо викориÑтано dns=default, Ñервери з вищою "
-"пріоритетніÑÑ‚ÑŽ будуть у верхній чаÑтині ÑпиÑку resolv.conf. Ð”Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
-"пріоритетноÑÑ‚Ñ– у межах одного профілю проÑто вкажіть Ñервери DNS у бажаному "
-"порÑдку викориÑтаннÑ. Зауважте, що чаÑто заÑіб розв'ÑÐ·Ð°Ð½Ð½Ñ Ð½Ð°Ð¼Ð°Ð³Ð°Ñ”Ñ‚ÑŒÑÑ"
-" викориÑтати Ñервери назв з /etc/resolv.conf за порÑдком зі ÑпиÑку,"
-" переходÑчи до наÑтупного Ñервера у ÑпиÑку, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Див.,"
-" наприклад, варіант «rotate» Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° dns-options. Якщо від'ємних"
-" пріоритетноÑтей DNS немає, буде розглÑнуто лише Ñервери назв із приÑтроїв із"
-" найнижчою пріоритетніÑÑ‚ÑŽ. При викориÑтанні розв'Ñзувача DNS, у Ñкому"
-" передбачено підтримку умовного переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ поділу DNS (із"
-" параметрами dns=dnsmasq або dns=systemd-resolved), Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ–Ð² у"
-" його ÑпиÑку пошуку кожне з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ. Домени пошуку"
-" визначають, Ñкі з Ñерверів назв опитувати, а пріоритетніÑÑ‚ÑŒ DNS"
-" викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ– Ñерверів назв на оÑнові"
-" домену. Запити Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ–Ð², Ñких немає у "
-"жодному зі ÑпиÑків пошуку переÑпрÑмовуютьÑÑ Ñ‡ÐµÑ€ÐµÐ· з'єднаннÑ, Ñкі мають "
-"оÑобливих домен-замінник «~.», Ñкий додаєтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ до з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· "
-"типовим маршрутом (або може бути доданий вручну). Якщо декілька з'єднань "
-"визначають один домен, викориÑтовуватиметьÑÑ Ð´Ð¾Ð¼ÐµÐ½ із вищим значеннÑм "
-"пріоритетноÑÑ‚Ñ– (меншим чиÑловим значеннÑм). Якщо підлеглий домен налаштовано"
-" на інший інтерфейÑ, його буде прийнÑто незалежно від пріоритетноÑÑ‚Ñ–, Ñкщо на"
-" батьківÑькому домені не іншому інтерфейÑÑ– не вÑтановлено від'ємної"
-" пріоритетноÑÑ‚Ñ–, Ñка ÑпричинÑÑ” Ð·Ð°Ñ‚Ñ–Ð½ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð»ÐµÐ³Ð»Ð¾Ð³Ð¾ домену. З поділом DNS"
-" можна уникнути небажаних витоків DNS належним Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾Ñтей"
-" DNS та доменів пошуку, так, щоб було налаштовано лише Ñервери назв бажаного"
-" інтерфейÑу."
+"пріоритетніÑÑ‚ÑŒ Ñерверів DNS. Менше Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ” вищу пріоритетніÑÑ‚ÑŒ. "
+"Від'ємні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ â€” оÑобливі: вони виключають інші конфігурації із більшим "
+"чиÑловим значеннÑм пріоритетноÑÑ‚Ñ–. Тому, Ñкщо Ñ” принаймні одне від'ємне "
+"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ–, буде викориÑтано лише Ñервери DNS зі з'єднань із "
+"найнижчим значеннÑм пріоритетноÑÑ‚Ñ–. Щоб уникнути уÑÑ–Ñ… витоків DNS, "
+"вÑтановіть пріоритетніÑÑ‚ÑŒ профілю, Ñкий Ñлід викориÑтовувати, у найбільше за "
+"модулем від'ємне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· уÑÑ–Ñ… активних профілів з'єднань. Ðульове "
+"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” налаштованому на загальному рівні типовому значенню. "
+"Якщо такого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” або воно Ñ” теж нульовим, типовим значеннÑм "
+"вважатиметьÑÑ 50 Ð´Ð»Ñ VPN (включно із WireGuard) Ñ– 100 Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… з'єднань. "
+"Зауважте, що пріоритетніÑÑ‚ÑŒ призначено Ð´Ð»Ñ ÑƒÐ¿Ð¾Ñ€ÑÐ´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² DNS "
+"Ð´Ð»Ñ Ñитуації із декількома активними з'єднаннÑми. Вона не призводить до "
+"двозначноÑÑ‚Ñ– при виборі із декількох Ñерверів DNS у межах одного профілю "
+"з'єднаннÑ. Якщо однакову пріоритетніÑÑ‚ÑŒ налаштовано Ð´Ð»Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… приÑтроїв, "
+"Ñпочатку буде взÑто до уваги VPN, потім приÑтрої із найкращим типовим "
+"маршрутом (маршрутом із найнижчою метрикою), а потім уÑÑ– інші приÑтрої. Якщо "
+"викориÑтано dns=default, Ñервери з вищою пріоритетніÑÑ‚ÑŽ будуть у верхній "
+"чаÑтині ÑпиÑку resolv.conf. Ð”Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ– у межах одного "
+"профілю проÑто вкажіть Ñервери DNS у бажаному порÑдку викориÑтаннÑ. "
+"Зауважте, що чаÑто заÑіб розв'ÑÐ·Ð°Ð½Ð½Ñ Ð½Ð°Ð¼Ð°Ð³Ð°Ñ”Ñ‚ÑŒÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтати Ñервери назв з /"
+"etc/resolv.conf за порÑдком зі ÑпиÑку, переходÑчи до наÑтупного Ñервера у "
+"ÑпиÑку, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Див., наприклад, варіант «rotate» Ð´Ð»Ñ "
+"параметра dns-options. Якщо від'ємних пріоритетноÑтей DNS немає, буде "
+"розглÑнуто лише Ñервери назв із приÑтроїв із найнижчою пріоритетніÑÑ‚ÑŽ. При "
+"викориÑтанні розв'Ñзувача DNS, у Ñкому передбачено підтримку умовного "
+"переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ поділу DNS (із параметрами dns=dnsmasq або dns=systemd-"
+"resolved), Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ–Ð² у його ÑпиÑку пошуку кожне з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ "
+"викориÑтовуєтьÑÑ. Домени пошуку визначають, Ñкі з Ñерверів назв опитувати, а "
+"пріоритетніÑÑ‚ÑŒ DNS викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾ÑÑ‚Ñ– Ñерверів "
+"назв на оÑнові домену. Запити Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ñ–Ð², Ñких немає у жодному зі ÑпиÑків "
+"пошуку переÑпрÑмовуютьÑÑ Ñ‡ÐµÑ€ÐµÐ· з'єднаннÑ, Ñкі мають оÑобливих домен-замінник "
+"«~.», Ñкий додаєтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ до з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· типовим маршрутом (або може "
+"бути доданий вручну). Якщо декілька з'єднань визначають один домен, "
+"викориÑтовуватиметьÑÑ Ð´Ð¾Ð¼ÐµÐ½ із вищим значеннÑм пріоритетноÑÑ‚Ñ– (меншим "
+"чиÑловим значеннÑм). Якщо підлеглий домен налаштовано на інший інтерфейÑ, "
+"його буде прийнÑто незалежно від пріоритетноÑÑ‚Ñ–, Ñкщо на батьківÑькому "
+"домені не іншому інтерфейÑÑ– не вÑтановлено від'ємної пріоритетноÑÑ‚Ñ–, Ñка "
+"ÑпричинÑÑ” Ð·Ð°Ñ‚Ñ–Ð½ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð»ÐµÐ³Ð»Ð¾Ð³Ð¾ домену. З поділом DNS можна уникнути "
+"небажаних витоків DNS належним Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ð¾Ñтей DNS та доменів "
+"пошуку, так, щоб було налаштовано лише Ñервери назв бажаного інтерфейÑу."
-#: ../clients/common/settings-docs.h.in:238
-#: ../clients/common/settings-docs.h.in:261
-#| msgid ""
-#| "Array of DNS search domains. Domains starting with a tilde ('~') are "
-#| "considered 'routing' domains and are used only to decide the interface "
-#| "over which a query must be forwarded; they are not used to complete "
-#| "unqualified host names."
+#: ../clients/common/settings-docs.h.in:242
+#: ../clients/common/settings-docs.h.in:265
msgid ""
"Array of DNS search domains. Domains starting with a tilde ('~') are "
"considered 'routing' domains and are used only to decide the interface over "
@@ -9221,14 +9266,14 @@ msgstr ""
"МаÑив доменів пошуку DNS. ЗапиÑи доменів, Ñкі починаютьÑÑ Ð· тильди («~») "
"вважатимутьÑÑ Ð·Ð°Ð¿Ð¸Ñами «маршрутних» доменів Ñ– викориÑтовуватимутьÑÑ Ð´Ð»Ñ "
"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу, крізь Ñкий Ñлід ÑпрÑмовувати запит; такі запиÑи не "
-"викориÑтовуватимутьÑÑ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ñ… назв вузлів. При викориÑтанні"
-" додатка DNS, у Ñкому передбачено умовне переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ поділ DNS"
-" домени пошуку вказують, Ñкі Ñервери назв Ñлід опитувати. Це робить поведінку"
-" відмінною від запуÑку зі звичайним /etc/resolv.conf. Щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ,"
-" ознайомтеÑÑ Ñ–Ð· довідкою до параметра dns-priority."
+"викориÑтовуватимутьÑÑ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ñ… назв вузлів. При викориÑтанні "
+"додатка DNS, у Ñкому передбачено умовне переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ поділ DNS "
+"домени пошуку вказують, Ñкі Ñервери назв Ñлід опитувати. Це робить поведінку "
+"відмінною від запуÑку зі звичайним /etc/resolv.conf. Щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ, "
+"ознайомтеÑÑ Ñ–Ð· довідкою до параметра dns-priority."
-#: ../clients/common/settings-docs.h.in:239
-#: ../clients/common/settings-docs.h.in:262
+#: ../clients/common/settings-docs.h.in:243
+#: ../clients/common/settings-docs.h.in:266
msgid ""
"The gateway associated with this configuration. This is only meaningful if "
"\"addresses\" is also set. The gateway's main purpose is to control the next "
@@ -9244,13 +9289,8 @@ msgstr ""
"налаштувань IP вказано never-default. Ðльтернативою вÑтановленню шлюзу Ñ” "
"Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñтатичного типового маршруту з довжиною префікÑа /0."
-#: ../clients/common/settings-docs.h.in:240
-#: ../clients/common/settings-docs.h.in:263
-#| msgid ""
-#| "When \"method\" is set to \"auto\" and this property to TRUE, "
-#| "automatically configured nameservers and search domains are ignored and "
-#| "only nameservers and search domains specified in the \"dns\" and \"dns-"
-#| "search\" properties, if any, are used."
+#: ../clients/common/settings-docs.h.in:244
+#: ../clients/common/settings-docs.h.in:267
msgid ""
"When \"method\" is set to \"auto\" and this property to TRUE, automatically "
"configured name servers and search domains are ignored and only name servers "
@@ -9263,8 +9303,8 @@ msgstr ""
"пошуку, вказані за допомогою влаÑтивоÑтей «dns» Ñ– «dns-search», Ñкщо буде "
"вказано ÑкіÑÑŒ запиÑи Ñерверів Ñ– доменів Ð´Ð»Ñ Ñ†Ð¸Ñ… влаÑтивоÑтей."
-#: ../clients/common/settings-docs.h.in:241
-#: ../clients/common/settings-docs.h.in:264
+#: ../clients/common/settings-docs.h.in:245
+#: ../clients/common/settings-docs.h.in:268
msgid ""
"When \"method\" is set to \"auto\" and this property to TRUE, automatically "
"configured routes are ignored and only routes specified in the \"routes\" "
@@ -9275,8 +9315,8 @@ msgstr ""
"викориÑтовуватимутьÑÑ Ð»Ð¸ÑˆÐµ маршрути, вказані за допомогою влаÑтивоÑÑ‚Ñ– "
"«routes», Ñкщо такі Ñ–Ñнують."
-#: ../clients/common/settings-docs.h.in:242
-#: ../clients/common/settings-docs.h.in:266
+#: ../clients/common/settings-docs.h.in:246
+#: ../clients/common/settings-docs.h.in:270
msgid ""
"If TRUE, allow overall network configuration to proceed even if the "
"configuration specified by this property times out. Note that at least one "
@@ -9293,8 +9333,8 @@ msgstr ""
"NMSettingIP4Config уможливлює уÑпішне Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑієї мережі, Ñкщо не "
"вдаєтьÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ IPv4, але IPv6 налаштовано уÑпішно."
-#: ../clients/common/settings-docs.h.in:243
-#: ../clients/common/settings-docs.h.in:267
+#: ../clients/common/settings-docs.h.in:247
+#: ../clients/common/settings-docs.h.in:271
msgid ""
"IP configuration method. NMSettingIP4Config and NMSettingIP6Config both "
"support \"disabled\", \"auto\", \"manual\", and \"link-local\". See the "
@@ -9323,8 +9363,8 @@ msgstr ""
"налаштовано на інтерфейÑÑ–, Ñкий надає Ñпільний доÑтуп до інтернету Ð´Ð»Ñ "
"підмережі, а не на з'єднанні, Ñке надаєтьÑÑ Ñƒ Ñпільний доÑтуп."
-#: ../clients/common/settings-docs.h.in:244
-#: ../clients/common/settings-docs.h.in:268
+#: ../clients/common/settings-docs.h.in:248
+#: ../clients/common/settings-docs.h.in:272
msgid ""
"If TRUE, this connection will never be the default connection for this IP "
"type, meaning it will never be assigned the default route by NetworkManager."
@@ -9333,8 +9373,8 @@ msgstr ""
"IP, що означає, що його ніколи не буде пов'Ñзано із типовим маршрутом у "
"NetworkManager."
-#: ../clients/common/settings-docs.h.in:245
-#: ../clients/common/settings-docs.h.in:270
+#: ../clients/common/settings-docs.h.in:249
+#: ../clients/common/settings-docs.h.in:274
msgid ""
"The default metric for routes that don't explicitly specify a metric. The "
"default value -1 means that the metric is chosen automatically based on the "
@@ -9354,8 +9394,8 @@ msgstr ""
"наÑправді означає, що вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 1024. Ð”Ð»Ñ IPv4 нуль Ñ” звичайним "
"значеннÑм Ð´Ð»Ñ Ð¼ÐµÑ‚Ñ€Ð¸ÐºÐ¸."
-#: ../clients/common/settings-docs.h.in:246
-#: ../clients/common/settings-docs.h.in:271
+#: ../clients/common/settings-docs.h.in:250
+#: ../clients/common/settings-docs.h.in:275
msgid ""
"Enable policy routing (source routing) and set the routing table used when "
"adding routes. This affects all routes, including device-routes, IPv4LL, "
@@ -9387,12 +9427,12 @@ msgstr ""
"таблиці. Так зроблено, щоб зберегти зворотну ÑуміÑніÑÑ‚ÑŒ Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів, "
"Ñкі змінюють таблиці маршрутизації з-поза меж NetworkManager."
-#: ../clients/common/settings-docs.h.in:247
-#: ../clients/common/settings-docs.h.in:272
+#: ../clients/common/settings-docs.h.in:251
+#: ../clients/common/settings-docs.h.in:276
msgid "Array of IP routes."
msgstr "МаÑив IP-маршрутів."
-#: ../clients/common/settings-docs.h.in:248
+#: ../clients/common/settings-docs.h.in:252
msgid ""
"Configure method for creating the address for use with RFC4862 IPv6 "
"Stateless Address Autoconfiguration. The permitted values are: "
@@ -9433,7 +9473,7 @@ msgstr ""
"конфіденційноÑÑ‚Ñ–, Ñкі налаштовуютьÑÑ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŽ «ip6-privacy», Ñ– не впливає "
"на тимчаÑові адреÑи, Ñкі налаштовано за допомогою відповідної влаÑтивоÑÑ‚Ñ–."
-#: ../clients/common/settings-docs.h.in:251
+#: ../clients/common/settings-docs.h.in:255
msgid ""
"A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp "
"client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried "
@@ -9490,7 +9530,7 @@ msgstr ""
"викориÑтано загальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«ipv6.dhcp-duid». Якщо загальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"не вказано, буде викориÑтано типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«lease»."
-#: ../clients/common/settings-docs.h.in:265
+#: ../clients/common/settings-docs.h.in:269
msgid ""
"Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If "
"enabled, it makes the kernel generate a temporary IPv6 address in addition "
@@ -9521,7 +9561,7 @@ msgstr ""
"увімкнено за допомогою параметра «stable-privacy» влаÑтивоÑÑ‚Ñ– «addr-gen-"
"mode», Ñк інший ÑпоÑіб уникнути ÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° вузлом за допомогою Ð°Ð´Ñ€ÐµÑ IPv6."
-#: ../clients/common/settings-docs.h.in:269
+#: ../clients/common/settings-docs.h.in:273
msgid ""
"A timeout for waiting Router Advertisements in seconds. If zero (the "
"default), a globally configured default is used. If still unspecified, the "
@@ -9534,7 +9574,7 @@ msgstr ""
"залежатиме від параметрів sysctl приÑтрою. Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 2147483647 "
"(MAXINT32), Ñкщо Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути необмеженим."
-#: ../clients/common/settings-docs.h.in:273
+#: ../clients/common/settings-docs.h.in:277
msgid ""
"Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 "
"tokenized interface identifiers. Useful with eui64 addr-gen-mode."
@@ -9543,22 +9583,22 @@ msgstr ""
"chown-6man-tokenised-ipv6-identifiers-02. КориÑне у поєднанні зі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"addr-gen-mode eui64."
-#: ../clients/common/settings-docs.h.in:274
+#: ../clients/common/settings-docs.h.in:278
msgid "Whether the transmitted traffic must be encrypted."
msgstr "Визначає, чи Ñлід шифрувати дані, Ñкі передаютьÑÑ."
-#: ../clients/common/settings-docs.h.in:275
+#: ../clients/common/settings-docs.h.in:279
msgid ""
"The pre-shared CAK (Connectivity Association Key) for MACsec Key Agreement."
msgstr ""
"Попереднього поширений CAK (ключ прив'Ñзки з'єднань) Ð´Ð»Ñ ÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² "
"MACsec."
-#: ../clients/common/settings-docs.h.in:276
+#: ../clients/common/settings-docs.h.in:280
msgid "Flags indicating how to handle the \"mka-cak\" property."
msgstr "Прапорці, Ñкі позначають, Ñк оброблÑти влаÑтивіÑÑ‚ÑŒ «mka-cak»."
-#: ../clients/common/settings-docs.h.in:277
+#: ../clients/common/settings-docs.h.in:281
msgid ""
"The pre-shared CKN (Connectivity-association Key Name) for MACsec Key "
"Agreement."
@@ -9566,7 +9606,7 @@ msgstr ""
"Попереднього поширена CKN (назва ключа ключ прив'Ñзки з'єднань) Ð´Ð»Ñ "
"ÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² MACsec."
-#: ../clients/common/settings-docs.h.in:278
+#: ../clients/common/settings-docs.h.in:282
msgid ""
"Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key "
"Agreement) is obtained."
@@ -9574,7 +9614,7 @@ msgstr ""
"Визначає ÑпоÑіб Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ CAK (ключа прив'Ñзки з'єднань) Ð´Ð»Ñ MKA (ÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ "
"ключів MACsec)."
-#: ../clients/common/settings-docs.h.in:279
+#: ../clients/common/settings-docs.h.in:283
msgid ""
"If given, specifies the parent interface name or parent connection UUID from "
"which this MACSEC interface should be created. If this property is not "
@@ -9586,7 +9626,7 @@ msgstr ""
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– не вказано, Ð·Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” міÑтити "
"параметр «802-3-ethernet» із влаÑтивіÑÑ‚ÑŽ «mac-address»."
-#: ../clients/common/settings-docs.h.in:280
+#: ../clients/common/settings-docs.h.in:284
msgid ""
"The port component of the SCI (Secure Channel Identifier), between 1 and "
"65534."
@@ -9594,17 +9634,17 @@ msgstr ""
"Компонент порту SCI (ідентифікатора безпечного каналу), Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ 1 до "
"65534."
-#: ../clients/common/settings-docs.h.in:281
+#: ../clients/common/settings-docs.h.in:285
msgid ""
"Specifies whether the SCI (Secure Channel Identifier) is included in every "
"packet."
msgstr "Вказує, чи включено SCI (Secure Channel Identifier) до кожного пакета."
-#: ../clients/common/settings-docs.h.in:282
+#: ../clients/common/settings-docs.h.in:286
msgid "Specifies the validation mode for incoming frames."
msgstr "Визначає режим перевірки Ð´Ð»Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… кадрів."
-#: ../clients/common/settings-docs.h.in:283
+#: ../clients/common/settings-docs.h.in:287
msgid ""
"The macvlan mode, which specifies the communication mechanism between "
"multiple macvlans on the same lower device."
@@ -9612,7 +9652,7 @@ msgstr ""
"Режим macvlan, Ñкий визначає механізм обміну даними між декількома macvlan "
"на одному приÑтрої нижнього рівнÑ."
-#: ../clients/common/settings-docs.h.in:284
+#: ../clients/common/settings-docs.h.in:288
msgid ""
"If given, specifies the parent interface name or parent connection UUID from "
"which this MAC-VLAN interface should be created. If this property is not "
@@ -9624,15 +9664,15 @@ msgstr ""
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– не вказано, Ð·Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” міÑтити "
"параметр «802-3-ethernet» із влаÑтивіÑÑ‚ÑŽ «mac-address»."
-#: ../clients/common/settings-docs.h.in:285
+#: ../clients/common/settings-docs.h.in:289
msgid "Whether the interface should be put in promiscuous mode."
msgstr "Визначає, чи Ñлід переводити Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñƒ нерозбірливий режим."
-#: ../clients/common/settings-docs.h.in:286
+#: ../clients/common/settings-docs.h.in:290
msgid "Whether the interface should be a MACVTAP."
msgstr "Визначає, чи має бути Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом MACVTAP."
-#: ../clients/common/settings-docs.h.in:287
+#: ../clients/common/settings-docs.h.in:291
msgid ""
"A list of driver names to match. Each element is a shell wildcard pattern. "
"See NMSettingMatch:interface-name for how special characters '|', '&', '!' "
@@ -9645,7 +9685,7 @@ msgstr ""
"Ñимволами — «|», «&», «!» та «\\» — Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñзкових Ñ– "
"обов'Ñзкових відповідноÑтей та Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð·Ñ–Ñ€Ñ†Ñ–Ð²."
-#: ../clients/common/settings-docs.h.in:288
+#: ../clients/common/settings-docs.h.in:292
msgid ""
"A list of interface names to match. Each element is a shell wildcard "
"pattern. An element can be prefixed with a pipe symbol (|) or an ampersand "
@@ -9677,7 +9717,7 @@ msgstr ""
"початку взірцÑ. Ðаприклад, «&\\!a» Ñ” обов'Ñзковою умовою Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ "
"відповідноÑÑ‚Ñ– Ñ€Ñдку «!a»."
-#: ../clients/common/settings-docs.h.in:289
+#: ../clients/common/settings-docs.h.in:293
msgid ""
"A list of kernel command line arguments to match. This may be used to check "
"whether a specific kernel command line option is set (or if prefixed with "
@@ -9701,7 +9741,7 @@ msgstr ""
"ÑкориÑтатиÑÑ Ñпеціальними Ñимволами — «|», «&», «!» та «\\» — Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"необов'Ñзкових Ñ– обов'Ñзкових відповідноÑтей та Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð·Ñ–Ñ€Ñ†Ñ–Ð²."
-#: ../clients/common/settings-docs.h.in:290
+#: ../clients/common/settings-docs.h.in:294
msgid ""
"A list of paths to match against the ID_PATH udev property of devices. "
"ID_PATH represents the topological persistent path of a device. It typically "
@@ -9729,35 +9769,39 @@ msgstr ""
"«\\» — Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñзкових Ñ– обов'Ñзкових відповідноÑтей та "
"Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð·Ñ–Ñ€Ñ†Ñ–Ð²."
-#: ../clients/common/settings-docs.h.in:291
+#: ../clients/common/settings-docs.h.in:295
msgid "The data path type. One of \"system\", \"netdev\" or empty."
msgstr ""
"Тип шлÑху до даних. Одне з таких значень: «system», «netdev» або порожнє "
"значеннÑ."
-#: ../clients/common/settings-docs.h.in:292
+#: ../clients/common/settings-docs.h.in:296
msgid "The bridge failure mode. One of \"secure\", \"standalone\" or empty."
msgstr ""
"Режим відмови міÑтка. Одне з таких значень: «secure», «standalone» або "
"порожнє значеннÑ."
-#: ../clients/common/settings-docs.h.in:293
+#: ../clients/common/settings-docs.h.in:297
msgid "Enable or disable multicast snooping."
msgstr "Увімкнути або вимкнути переÑтавлÑÐ½Ð½Ñ ÑƒÐ½Ñ–Ð²ÐµÑ€Ñальної транÑлÑції."
-#: ../clients/common/settings-docs.h.in:294
+#: ../clients/common/settings-docs.h.in:298
msgid "Enable or disable RSTP."
msgstr "Увімкнути або вимкнути RSTP."
-#: ../clients/common/settings-docs.h.in:295
+#: ../clients/common/settings-docs.h.in:299
msgid "Enable or disable STP."
msgstr "Увімкнути або вимкнути STP."
-#: ../clients/common/settings-docs.h.in:296
+#: ../clients/common/settings-docs.h.in:300
msgid "Open vSwitch DPDK device arguments."
msgstr "Параметри приÑтрою Open vSwitch DPDK."
-#: ../clients/common/settings-docs.h.in:297
+#: ../clients/common/settings-docs.h.in:301
+msgid "A dictionary of key/value pairs with exernal-ids for OVS."
+msgstr "Словник з пар ключ/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð· зовнішніми ідентифікаторами Ð´Ð»Ñ OVS."
+
+#: ../clients/common/settings-docs.h.in:302
msgid ""
"The interface type. Either \"internal\", \"system\", \"patch\", \"dpdk\", or "
"empty."
@@ -9765,7 +9809,7 @@ msgstr ""
"Тип інтерфейÑу. РÑдок «internal», «system», «patch», «dpdk» або порожній "
"Ñ€Ñдок."
-#: ../clients/common/settings-docs.h.in:298
+#: ../clients/common/settings-docs.h.in:303
msgid ""
"Specifies the name of the interface for the other side of the patch. The "
"patch on the other side must also set this interface as peer."
@@ -9774,30 +9818,30 @@ msgstr ""
"з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ð° іншому боці також має вÑтановлювати цей Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñк "
"однорівневий вузол."
-#: ../clients/common/settings-docs.h.in:299
+#: ../clients/common/settings-docs.h.in:304
msgid "The time port must be inactive in order to be considered down."
msgstr "Щоб вважатиÑÑ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼, порт чаÑу має бути неактивним."
-#: ../clients/common/settings-docs.h.in:300
+#: ../clients/common/settings-docs.h.in:305
msgid ""
"Bonding mode. One of \"active-backup\", \"balance-slb\", or \"balance-tcp\"."
msgstr ""
"Режим прив'ÑзуваннÑ. Одне з таких значень: «active-backup», «balance-slb» "
"або «balance-tcp»."
-#: ../clients/common/settings-docs.h.in:301
+#: ../clients/common/settings-docs.h.in:306
msgid "The time port must be active before it starts forwarding traffic."
msgstr "Щоб почати переÑпрÑмовувати дані, Ñлід активувати порт чаÑу."
-#: ../clients/common/settings-docs.h.in:302
+#: ../clients/common/settings-docs.h.in:307
msgid "LACP mode. One of \"active\", \"off\", or \"passive\"."
msgstr "Режим LACP. Одне з таких значень: «active», «off» або «passive»."
-#: ../clients/common/settings-docs.h.in:303
+#: ../clients/common/settings-docs.h.in:308
msgid "The VLAN tag in the range 0-4095."
msgstr "Теґ VLAN у діапазоні від 0 до 4095."
-#: ../clients/common/settings-docs.h.in:304
+#: ../clients/common/settings-docs.h.in:309
msgid ""
"The VLAN mode. One of \"access\", \"native-tagged\", \"native-untagged\", "
"\"trunk\" or unset."
@@ -9805,7 +9849,7 @@ msgstr ""
"Режим VLAN. Одне з таких значень: «access», «native-tagged», «native-"
"untagged», «trunk» або порожнє значеннÑ."
-#: ../clients/common/settings-docs.h.in:305
+#: ../clients/common/settings-docs.h.in:310
msgid ""
"If non-zero, instruct pppd to set the serial port to the specified "
"baudrate. This value should normally be left as 0 to automatically choose "
@@ -9815,7 +9859,7 @@ msgstr ""
"вказану швидкіÑÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у бодах. Зазвичай, Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– "
"Ñлід залишити нульове значеннÑ, щоб швидкіÑÑ‚ÑŒ було вибрано автоматично."
-#: ../clients/common/settings-docs.h.in:306
+#: ../clients/common/settings-docs.h.in:311
msgid ""
"If TRUE, specify that pppd should set the serial port to use hardware flow "
"control with RTS and CTS signals. This value should normally be set to "
@@ -9825,7 +9869,7 @@ msgstr ""
"ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼ апаратних даних за допомогою Ñигналів RTS Ñ– CTS. За "
"звичних умов, Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– має бути вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ FALSE."
-#: ../clients/common/settings-docs.h.in:307
+#: ../clients/common/settings-docs.h.in:312
msgid ""
"If non-zero, instruct pppd to presume the connection to the peer has failed "
"if the specified number of LCP echo-requests go unanswered by the peer. The "
@@ -9837,7 +9881,7 @@ msgstr ""
"кількіÑÑ‚ÑŒ луна-запитів LCP. Якщо викориÑтовуєтьÑÑ Ñ†Ñ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŒ, Ð´Ð»Ñ "
"влаÑтивоÑÑ‚Ñ– «lcp-echo-interval» Ñлід вÑтановити ненульове значеннÑ."
-#: ../clients/common/settings-docs.h.in:308
+#: ../clients/common/settings-docs.h.in:313
msgid ""
"If non-zero, instruct pppd to send an LCP echo-request frame to the peer "
"every n seconds (where n is the specified value). Note that some PPP peers "
@@ -9849,7 +9893,7 @@ msgstr ""
"відповідатимуть на луна-запити, а деÑкі — ні. Визначити, чи відповідатиме "
"певний вузол, у автоматичному режимі неможливо."
-#: ../clients/common/settings-docs.h.in:309
+#: ../clients/common/settings-docs.h.in:314
msgid ""
"If TRUE, stateful MPPE is used. See pppd documentation for more information "
"on stateful MPPE."
@@ -9857,7 +9901,7 @@ msgstr ""
"Якщо TRUE, викориÑтовуватиметьÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ MPPE зі Ñтанами (stateful). "
"Докладніший Ð¾Ð¿Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ MPPE зі Ñтанами наведено у документації із pppd."
-#: ../clients/common/settings-docs.h.in:310
+#: ../clients/common/settings-docs.h.in:315
msgid ""
"If non-zero, instruct pppd to request that the peer send packets no larger "
"than the specified size. If non-zero, the MRU should be between 128 and "
@@ -9867,20 +9911,20 @@ msgstr ""
"щодо того, щоб він надÑилав пакети, не більші за вказаний розмір. Якщо має "
"ненульове значеннÑ, MRU має бути від 128 до 16384."
-#: ../clients/common/settings-docs.h.in:311
+#: ../clients/common/settings-docs.h.in:316
msgid ""
"If non-zero, instruct pppd to send packets no larger than the specified size."
msgstr ""
"Якщо має ненульове значеннÑ, наказує pppd надÑилати пакети, не більші за "
"вказаний розмір."
-#: ../clients/common/settings-docs.h.in:312
+#: ../clients/common/settings-docs.h.in:317
msgid "If TRUE, Van Jacobsen TCP header compression will not be requested."
msgstr ""
"Якщо має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TRUE, запит щодо ÑтиÑÐºÐ°Ð½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² TCP ван ЯкобÑена не "
"надÑилатиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:313
+#: ../clients/common/settings-docs.h.in:318
msgid ""
"If TRUE, do not require the other side (usually the PPP server) to "
"authenticate itself to the client. If FALSE, require authentication from "
@@ -9891,35 +9935,35 @@ msgstr ""
"FALSE, вимагати Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð· боку віддаленого вузла. У "
"більшоÑÑ‚Ñ– випадків Ñлід викориÑтовувати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TRUE."
-#: ../clients/common/settings-docs.h.in:314
+#: ../clients/common/settings-docs.h.in:319
msgid "If TRUE, BSD compression will not be requested."
msgstr "Якщо TRUE, ÑтиÑÐºÐ°Ð½Ð½Ñ BSD не вимагатиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:315
+#: ../clients/common/settings-docs.h.in:320
msgid "If TRUE, \"deflate\" compression will not be requested."
msgstr "Якщо TRUE, ÑтиÑÐºÐ°Ð½Ð½Ñ Â«deflate» не вимагатиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:316
+#: ../clients/common/settings-docs.h.in:321
msgid "If TRUE, the CHAP authentication method will not be used."
msgstr "Якщо TRUE, ÑпоÑіб Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ CHAP не викориÑтовуватиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:317
+#: ../clients/common/settings-docs.h.in:322
msgid "If TRUE, the EAP authentication method will not be used."
msgstr "Якщо TRUE, ÑпоÑіб Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ EAP не викориÑтовуватиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:318
+#: ../clients/common/settings-docs.h.in:323
msgid "If TRUE, the MSCHAP authentication method will not be used."
msgstr "Якщо TRUE, ÑпоÑіб Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ MSCHAP не викориÑтовуватиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:319
+#: ../clients/common/settings-docs.h.in:324
msgid "If TRUE, the MSCHAPv2 authentication method will not be used."
msgstr "Якщо TRUE, ÑпоÑіб Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ MSCHAPv2 не викориÑтовуватиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:320
+#: ../clients/common/settings-docs.h.in:325
msgid "If TRUE, the PAP authentication method will not be used."
msgstr "Якщо TRUE, ÑпоÑіб Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ PAP не викориÑтовуватиметьÑÑ."
-#: ../clients/common/settings-docs.h.in:321
+#: ../clients/common/settings-docs.h.in:326
msgid ""
"If TRUE, MPPE (Microsoft Point-to-Point Encryption) will be required for the "
"PPP session. If either 64-bit or 128-bit MPPE is not available the session "
@@ -9930,7 +9974,7 @@ msgstr ""
"128-бітове MPPE виÑвитьÑÑ Ð½ÐµÐ´Ð¾Ñтупним, ÑÐµÐ°Ð½Ñ Ð½Ðµ буде Ñтворено. Зауважте, що "
"MPPE не викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¸Ñ… широкоÑмугових з'єднань."
-#: ../clients/common/settings-docs.h.in:322
+#: ../clients/common/settings-docs.h.in:327
msgid ""
"If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required "
"for the PPP session, and the \"require-mppe\" property must also be set to "
@@ -9941,7 +9985,7 @@ msgstr ""
"Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «require-mppe» також має бути вÑтановлено TRUE. Якщо 128-"
"бітове MPPE виÑвитьÑÑ Ð½ÐµÐ´Ð¾Ñтупним, ÑÐµÐ°Ð½Ñ Ð½Ðµ буде Ñтворено."
-#: ../clients/common/settings-docs.h.in:323
+#: ../clients/common/settings-docs.h.in:328
msgid ""
"If given, specifies the parent interface name on which this PPPoE connection "
"should be created. If this property is not specified, the connection is "
@@ -9953,11 +9997,11 @@ msgstr ""
"з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ активовано на інтерфейÑÑ–, Ñкий вказано за допомогою параметра "
"«interface-name» NMSettingConnection."
-#: ../clients/common/settings-docs.h.in:324
+#: ../clients/common/settings-docs.h.in:329
msgid "Password used to authenticate with the PPPoE service."
msgstr "Пароль, Ñкий викориÑтовуватиметьÑÑ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° Ñлужбі PPPoE."
-#: ../clients/common/settings-docs.h.in:326
+#: ../clients/common/settings-docs.h.in:331
msgid ""
"If specified, instruct PPPoE to only initiate sessions with access "
"concentrators that provide the specified service. For most providers, this "
@@ -9970,33 +10014,33 @@ msgstr ""
"Ñкщо ви маєте Ñправу із концентраторами із декількома ÑпоÑобами доÑтупу або "
"відомо, що вказана Ñлужба Ñ” необхідною."
-#: ../clients/common/settings-docs.h.in:327
+#: ../clients/common/settings-docs.h.in:332
msgid "Username used to authenticate with the PPPoE service."
msgstr ""
"Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, Ñке викориÑтовуватиметьÑÑ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° Ñлужбі "
"PPPoE."
-#: ../clients/common/settings-docs.h.in:328
+#: ../clients/common/settings-docs.h.in:333
msgid "Whether the proxy configuration is for browser only."
msgstr ""
"Визначає, чи викориÑтовуютьÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ– лише Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ð´Ð»Ñ "
"переглÑду інтернету."
-#: ../clients/common/settings-docs.h.in:329
+#: ../clients/common/settings-docs.h.in:334
msgid ""
"Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)"
msgstr ""
"СпоÑіб Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ–. Типовим Ñ” NM_SETTING_PROXY_METHOD_NONE (0)"
-#: ../clients/common/settings-docs.h.in:330
+#: ../clients/common/settings-docs.h.in:335
msgid "PAC script for the connection."
msgstr "Скрипт PAC Ð´Ð»Ñ Ð·'єднаннÑ."
-#: ../clients/common/settings-docs.h.in:331
+#: ../clients/common/settings-docs.h.in:336
msgid "PAC URL for obtaining PAC file."
msgstr "ÐдреÑа PAC Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° PAC."
-#: ../clients/common/settings-docs.h.in:332
+#: ../clients/common/settings-docs.h.in:337
msgid ""
"Speed to use for communication over the serial port. Note that this value "
"usually has no effect for mobile broadband modems as they generally ignore "
@@ -10007,20 +10051,20 @@ msgstr ""
"загалом, Ð´Ð»Ñ Ð½Ð¸Ñ… параметри швидкоÑÑ‚Ñ– ігноруютьÑÑ â€” проÑто викориÑтовуєтьÑÑ "
"найвища доÑтупна швидкіÑÑ‚ÑŒ."
-#: ../clients/common/settings-docs.h.in:333
+#: ../clients/common/settings-docs.h.in:338
msgid "Byte-width of the serial communication. The 8 in \"8n1\" for example."
msgstr "Байтова ширина поÑлідовного обміну даними. Ðаприклад, 8 у «8n1»."
-#: ../clients/common/settings-docs.h.in:334
+#: ../clients/common/settings-docs.h.in:339
msgid "Parity setting of the serial port."
msgstr "Параметр парноÑÑ‚Ñ– поÑлідовного порту."
-#: ../clients/common/settings-docs.h.in:335
+#: ../clients/common/settings-docs.h.in:340
msgid "Time to delay between each byte sent to the modem, in microseconds."
msgstr ""
"Затримка у чаÑÑ– між надÑиланнÑми одного байта на модем, у мікроÑекундах."
-#: ../clients/common/settings-docs.h.in:336
+#: ../clients/common/settings-docs.h.in:341
msgid ""
"Number of stop bits for communication on the serial port. Either 1 or 2. "
"The 1 in \"8n1\" for example."
@@ -10028,7 +10072,7 @@ msgstr ""
"КількіÑÑ‚ÑŒ бітів зупинки Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ даними на поÑлідовному порту. Може мати "
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 1 або 2. Ðаприклад, 1 у «8n1»."
-#: ../clients/common/settings-docs.h.in:337
+#: ../clients/common/settings-docs.h.in:342
msgid ""
"Whether to autoprobe virtual functions by a compatible driver. If set to "
"NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver "
@@ -10048,7 +10092,7 @@ msgstr ""
"викориÑтовуватимутьÑÑ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– типові параметри. Якщо загальні типові "
"параметри не вказано, припуÑкатиметьÑÑ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚ NM_TERNARY_TRUE (1)."
-#: ../clients/common/settings-docs.h.in:338
+#: ../clients/common/settings-docs.h.in:343
msgid ""
"The total number of virtual functions to create. Note that when the sriov "
"setting is present NetworkManager enforces the number of virtual functions "
@@ -10063,7 +10107,7 @@ msgstr ""
"внеÑенню будь-Ñких змін до параметрів SR-IOV, не додавайте параметр sriov до "
"параметрів з'єднаннÑ."
-#: ../clients/common/settings-docs.h.in:339
+#: ../clients/common/settings-docs.h.in:344
msgid ""
"Array of virtual function descriptors. Each VF descriptor is a dictionary "
"mapping attribute names to GVariant values. The 'index' entry is mandatory "
@@ -10089,15 +10133,15 @@ msgstr ""
"форму: «ІДЕÐТИФІКÐТОР[.ПРІОРИТЕТÐІСТЬ[.ПРОТОКОЛ]]». ЗначеннÑм ПРОТОКОЛ може "
"бути або «q» Ð´Ð»Ñ 802.1Q (типовий варіант) або «ad» Ð´Ð»Ñ 802.1ad."
-#: ../clients/common/settings-docs.h.in:340
+#: ../clients/common/settings-docs.h.in:345
msgid "Array of TC queueing disciplines."
msgstr "МаÑив диÑциплін TC у черзі."
-#: ../clients/common/settings-docs.h.in:341
+#: ../clients/common/settings-docs.h.in:346
msgid "Array of TC traffic filters."
msgstr "СпиÑок TC фільтрів обміну даними."
-#: ../clients/common/settings-docs.h.in:342
+#: ../clients/common/settings-docs.h.in:347
msgid ""
"The JSON configuration for the team network interface. The property should "
"contain raw JSON configuration data suitable for teamd, because the value is "
@@ -10110,8 +10154,8 @@ msgstr ""
"викориÑтовуватимутьÑÑ Ñ‚Ð¸Ð¿Ð¾Ð²Ñ– налаштуваннÑ. Щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про "
"Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, ознайомитеÑÑ Ñ–Ð· підручником (man) з teamd.conf."
-#: ../clients/common/settings-docs.h.in:343
-#: ../clients/common/settings-docs.h.in:361
+#: ../clients/common/settings-docs.h.in:348
+#: ../clients/common/settings-docs.h.in:366
msgid ""
"Link watchers configuration for the connection: each link watcher is defined "
"by a dictionary, whose keys depend upon the selected link watcher. Available "
@@ -10132,23 +10176,23 @@ msgstr ""
"«validate-inactive», «send-always». Докладніше про це на Ñторінці підручника "
"(man) щодо teamd.conf."
-#: ../clients/common/settings-docs.h.in:344
+#: ../clients/common/settings-docs.h.in:349
msgid "Corresponds to the teamd mcast_rejoin.count."
msgstr "Відповідає mcast_rejoin.count у teamd."
-#: ../clients/common/settings-docs.h.in:345
+#: ../clients/common/settings-docs.h.in:350
msgid "Corresponds to the teamd mcast_rejoin.interval."
msgstr "Відповідає mcast_rejoin.interval у teamd."
-#: ../clients/common/settings-docs.h.in:346
+#: ../clients/common/settings-docs.h.in:351
msgid "Corresponds to the teamd notify_peers.count."
msgstr "Відповідає notify_peers.count у teamd."
-#: ../clients/common/settings-docs.h.in:347
+#: ../clients/common/settings-docs.h.in:352
msgid "Corresponds to the teamd notify_peers.interval."
msgstr "Відповідає notify_peers.interval у teamd."
-#: ../clients/common/settings-docs.h.in:348
+#: ../clients/common/settings-docs.h.in:353
msgid ""
"Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", "
"\"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\", \"random\"."
@@ -10156,43 +10200,43 @@ msgstr ""
"Відповідає runner.name у teamd. Можливі такі значеннÑ: «roundrobin», "
"«broadcast», «activebackup», «loadbalance», «lacp», «random»."
-#: ../clients/common/settings-docs.h.in:349
+#: ../clients/common/settings-docs.h.in:354
msgid "Corresponds to the teamd runner.active."
msgstr "Відповідає runner.active у teamd."
-#: ../clients/common/settings-docs.h.in:350
+#: ../clients/common/settings-docs.h.in:355
msgid "Corresponds to the teamd runner.agg_select_policy."
msgstr "Відповідає runner.agg_select_policy у teamd."
-#: ../clients/common/settings-docs.h.in:351
+#: ../clients/common/settings-docs.h.in:356
msgid "Corresponds to the teamd runner.fast_rate."
msgstr "Відповідає runner.fast_rate у teamd."
-#: ../clients/common/settings-docs.h.in:352
+#: ../clients/common/settings-docs.h.in:357
msgid "Corresponds to the teamd runner.hwaddr_policy."
msgstr "Відповідає runner.hwaddr_policy у teamd."
-#: ../clients/common/settings-docs.h.in:353
+#: ../clients/common/settings-docs.h.in:358
msgid "Corresponds to the teamd runner.min_ports."
msgstr "Відповідає runner.min_ports у teamd."
-#: ../clients/common/settings-docs.h.in:354
+#: ../clients/common/settings-docs.h.in:359
msgid "Corresponds to the teamd runner.sys_prio."
msgstr "Відповідає runner.sys_prio у teamd."
-#: ../clients/common/settings-docs.h.in:355
+#: ../clients/common/settings-docs.h.in:360
msgid "Corresponds to the teamd runner.tx_balancer.name."
msgstr "Відповідає runner.tx_balancer.name у teamd."
-#: ../clients/common/settings-docs.h.in:356
+#: ../clients/common/settings-docs.h.in:361
msgid "Corresponds to the teamd runner.tx_balancer.interval."
msgstr "Відповідає runner.tx_balancer.interval у teamd."
-#: ../clients/common/settings-docs.h.in:357
+#: ../clients/common/settings-docs.h.in:362
msgid "Corresponds to the teamd runner.tx_hash."
msgstr "Відповідає runner.tx_hash у teamd."
-#: ../clients/common/settings-docs.h.in:358
+#: ../clients/common/settings-docs.h.in:363
msgid ""
"The JSON configuration for the team port. The property should contain raw "
"JSON configuration data suitable for teamd, because the value is passed "
@@ -10205,19 +10249,19 @@ msgstr ""
"викориÑтовуватимутьÑÑ Ñ‚Ð¸Ð¿Ð¾Ð²Ñ– налаштуваннÑ. Щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про "
"Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, ознайомитеÑÑ Ñ–Ð· підручником (man) з teamd.conf."
-#: ../clients/common/settings-docs.h.in:359
+#: ../clients/common/settings-docs.h.in:364
msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_key."
msgstr "Відповідає ports.PORTIFNAME.lacp_key у teamd."
-#: ../clients/common/settings-docs.h.in:360
+#: ../clients/common/settings-docs.h.in:365
msgid "Corresponds to the teamd ports.PORTIFNAME.lacp_prio."
msgstr "Відповідає ports.PORTIFNAME.lacp_prio у teamd."
-#: ../clients/common/settings-docs.h.in:362
+#: ../clients/common/settings-docs.h.in:367
msgid "Corresponds to the teamd ports.PORTIFNAME.prio."
msgstr "Відповідає ports.PORTIFNAME.prio у teamd."
-#: ../clients/common/settings-docs.h.in:363
+#: ../clients/common/settings-docs.h.in:368
msgid ""
"Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the "
"parameter is skipped from the json config."
@@ -10225,11 +10269,11 @@ msgstr ""
"Відповідає ports.PORTIFNAME.queue_id у teamd. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ -1 означає, що "
"параметр пропуÑкаєтьÑÑ Ñƒ налаштуваннÑÑ… json."
-#: ../clients/common/settings-docs.h.in:364
+#: ../clients/common/settings-docs.h.in:369
msgid "Corresponds to the teamd ports.PORTIFNAME.sticky."
msgstr "Відповідає ports.PORTIFNAME.sticky у teamd."
-#: ../clients/common/settings-docs.h.in:365
+#: ../clients/common/settings-docs.h.in:370
msgid ""
"The group ID which will own the device. If set to NULL everyone will be able "
"to use the device."
@@ -10237,7 +10281,7 @@ msgstr ""
"Ідентифікатор групи-влаÑника приÑтрою. Якщо вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NULL, "
"приÑтроєм зможе кориÑтуватиÑÑ Ð±ÑƒÐ´ÑŒ-хто."
-#: ../clients/common/settings-docs.h.in:366
+#: ../clients/common/settings-docs.h.in:371
msgid ""
"The operating mode of the virtual device. Allowed values are "
"NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and "
@@ -10247,7 +10291,7 @@ msgstr ""
"NM_SETTING_TUN_MODE_TUN (1) Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою шару 3 Ñ– "
"NM_SETTING_TUN_MODE_TAP (2) Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою Ethernet-подібного шару 2."
-#: ../clients/common/settings-docs.h.in:367
+#: ../clients/common/settings-docs.h.in:372
msgid ""
"If the property is set to TRUE, the interface will support multiple file "
"descriptors (queues) to parallelize packet sending or receiving. Otherwise, "
@@ -10258,7 +10302,7 @@ msgstr ""
"надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð¾Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð². Якщо ж вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ FALSE, "
"інтерфейÑом підтримуватиметьÑÑ Ð»Ð¸ÑˆÐµ одна черга."
-#: ../clients/common/settings-docs.h.in:368
+#: ../clients/common/settings-docs.h.in:373
msgid ""
"The user ID which will own the device. If set to NULL everyone will be able "
"to use the device."
@@ -10266,7 +10310,7 @@ msgstr ""
"Ідентифікатор кориÑтувача-влаÑника приÑтрою. Якщо вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ NULL, "
"приÑтроєм зможе кориÑтуватиÑÑ Ð±ÑƒÐ´ÑŒ-хто."
-#: ../clients/common/settings-docs.h.in:369
+#: ../clients/common/settings-docs.h.in:374
msgid ""
"If TRUE the interface will prepend a 4 byte header describing the physical "
"interface to the packets."
@@ -10274,7 +10318,7 @@ msgstr ""
"Якщо TRUE, Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð¾Ð¿Ð¸Ñуватиме на початку пакетів заголовок у 4 байти із "
"опиÑом фізичного інтерфейÑу."
-#: ../clients/common/settings-docs.h.in:370
+#: ../clients/common/settings-docs.h.in:375
msgid ""
"If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network "
"header."
@@ -10282,7 +10326,7 @@ msgstr ""
"Якщо IFF_VNET_HDR має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TRUE, тунельовані пакети включатимуть "
"заголовок мережі virtio."
-#: ../clients/common/settings-docs.h.in:371
+#: ../clients/common/settings-docs.h.in:376
msgid ""
"A dictionary of key/value pairs with user data. This data is ignored by "
"NetworkManager and can be used at the users discretion. The keys only "
@@ -10295,7 +10339,15 @@ msgstr ""
"формату ASCII, але Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ бути довільними Ñ€Ñдками UTF8, довжина "
"Ñких не перевищує певного значеннÑ."
-#: ../clients/common/settings-docs.h.in:372
+#: ../clients/common/settings-docs.h.in:377
+msgid ""
+"This property specifies the peer interface name of the veth. This property "
+"is mandatory."
+msgstr ""
+"Ð¦Ñ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŒ визначає назву однорангового інтерфейÑу Ð´Ð»Ñ veth. ЗначеннÑ"
+" цієї влаÑтивоÑÑ‚Ñ– Ñлід вказати обов'Ñзково."
+
+#: ../clients/common/settings-docs.h.in:378
msgid ""
"For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p "
"priorities. The mapping is given in the format \"from:to\" where both \"from"
@@ -10305,7 +10357,7 @@ msgstr ""
"802.1p. Прив'Ñзка визначаєтьÑÑ Ñƒ форматі «з:до», де обидва значеннÑ, «з» Ñ– "
"«до» Ñ” цілими додатними чиÑлами, наприклад «7:3»."
-#: ../clients/common/settings-docs.h.in:373
+#: ../clients/common/settings-docs.h.in:379
msgid ""
"One or more flags which control the behavior and features of the VLAN "
"interface. Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of "
@@ -10327,7 +10379,7 @@ msgstr ""
"зберегти зворотну ÑуміÑніÑÑ‚ÑŒ, типовим значеннÑм у програмному інтерфейÑÑ– D-"
"Bus лишаєтьÑÑ 0, а неÑтача влаÑтивоÑÑ‚Ñ– у D-Bus також розглÑдаєтьÑÑ Ñк 0."
-#: ../clients/common/settings-docs.h.in:374
+#: ../clients/common/settings-docs.h.in:380
msgid ""
"The VLAN identifier that the interface created by this connection should be "
"assigned. The valid range is from 0 to 4094, without the reserved id 4095."
@@ -10336,7 +10388,7 @@ msgstr ""
"з'єднаннÑм. Коректним діапазоном Ñ” діапазон від 0 до 4094, без "
"зарезервованого ідентифікатора 4095."
-#: ../clients/common/settings-docs.h.in:375
+#: ../clients/common/settings-docs.h.in:381
msgid ""
"For incoming packets, a list of mappings from 802.1p priorities to Linux SKB "
"priorities. The mapping is given in the format \"from:to\" where both \"from"
@@ -10346,7 +10398,7 @@ msgstr ""
"Linux. Прив'Ñзка визначаєтьÑÑ Ñƒ форматі «з:до», де обидва значеннÑ, «з» Ñ– "
"«до» Ñ” цілими додатними чиÑлами, наприклад «7:3»."
-#: ../clients/common/settings-docs.h.in:376
+#: ../clients/common/settings-docs.h.in:382
msgid ""
"If given, specifies the parent interface name or parent connection UUID from "
"which this VLAN interface should be created. If this property is not "
@@ -10358,7 +10410,7 @@ msgstr ""
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑÑ‚Ñ– не вказано, Ð·Ð°Ð¿Ð¸Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” міÑтити "
"параметр «802-3-ethernet» із влаÑтивіÑÑ‚ÑŽ «mac-address»."
-#: ../clients/common/settings-docs.h.in:377
+#: ../clients/common/settings-docs.h.in:383
msgid ""
"Dictionary of key/value pairs of VPN plugin specific data. Both keys and "
"values must be strings."
@@ -10366,7 +10418,7 @@ msgstr ""
"Словник із пар ключ-Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñпецифічних даних додатка VPN. Величинами "
"ключа Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ бути лише текÑтові Ñ€Ñдки."
-#: ../clients/common/settings-docs.h.in:378
+#: ../clients/common/settings-docs.h.in:384
msgid ""
"If the VPN service supports persistence, and this property is TRUE, the VPN "
"will attempt to stay connected across link changes and outages, until "
@@ -10377,7 +10429,7 @@ msgstr ""
"Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ параметрів зв'Ñзку або неможливоÑÑ‚Ñ– обміну даними, аж доки "
"з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ буде розірвано Ñвним чином."
-#: ../clients/common/settings-docs.h.in:379
+#: ../clients/common/settings-docs.h.in:385
msgid ""
"Dictionary of key/value pairs of VPN plugin specific secrets like passwords "
"or private keys. Both keys and values must be strings."
@@ -10386,7 +10438,7 @@ msgstr ""
"VPN, зокрема паролів або закритих ключів. Величинами ключа Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ "
"бути лише текÑтові Ñ€Ñдки."
-#: ../clients/common/settings-docs.h.in:380
+#: ../clients/common/settings-docs.h.in:386
msgid ""
"D-Bus service name of the VPN plugin that this setting uses to connect to "
"its network. i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin."
@@ -10395,7 +10447,7 @@ msgstr ""
"додатка з його мережею. Приклад: org.freedesktop.NetworkManager.vpnc Ð´Ð»Ñ "
"додатка vpnc."
-#: ../clients/common/settings-docs.h.in:381
+#: ../clients/common/settings-docs.h.in:387
msgid ""
"Timeout for the VPN service to establish the connection. Some services may "
"take quite a long time to connect. Value of 0 means a default timeout, which "
@@ -10408,7 +10460,7 @@ msgstr ""
"допомогою параметра vpn.timeout у файлі налаштувань). ЗначеннÑ, Ñкі "
"перевищують нуль, визначають Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ Ñекундах."
-#: ../clients/common/settings-docs.h.in:382
+#: ../clients/common/settings-docs.h.in:388
msgid ""
"If the VPN connection requires a user name for authentication, that name "
"should be provided here. If the connection is available to more than one "
@@ -10424,15 +10476,15 @@ msgstr ""
"порожнє, NetworkManager автоматично викориÑтає ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, Ñкий "
"надіÑлав запит щодо вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ VPN."
-#: ../clients/common/settings-docs.h.in:383
+#: ../clients/common/settings-docs.h.in:389
msgid "The routing table for this VRF."
msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ VRF."
-#: ../clients/common/settings-docs.h.in:384
+#: ../clients/common/settings-docs.h.in:390
msgid "Specifies the lifetime in seconds of FDB entries learnt by the kernel."
msgstr "Визначає Ñ‡Ð°Ñ Ð¶Ð¸Ñ‚Ñ‚Ñ Ñƒ Ñекундах запиÑів FDB, вивчених Ñдром."
-#: ../clients/common/settings-docs.h.in:385
+#: ../clients/common/settings-docs.h.in:391
msgid ""
"Specifies the UDP destination port to communicate to the remote VXLAN tunnel "
"endpoint."
@@ -10440,22 +10492,22 @@ msgstr ""
"Визначає порт Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ UDP Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ даними із віддаленою кінцевою "
"точкою тунелю VXLAN."
-#: ../clients/common/settings-docs.h.in:386
+#: ../clients/common/settings-docs.h.in:392
msgid ""
"Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use."
msgstr ""
"Визначає ідентифікатор мережі VXLAN (або ідентифікатор Ñегмента VXLAN), Ñким "
"Ñлід ÑкориÑтатиÑÑ."
-#: ../clients/common/settings-docs.h.in:387
+#: ../clients/common/settings-docs.h.in:393
msgid "Specifies whether netlink LL ADDR miss notifications are generated."
msgstr "Визначає, чи будуть ÑтворюватиÑÑ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ netlink LL ADDR miss."
-#: ../clients/common/settings-docs.h.in:388
+#: ../clients/common/settings-docs.h.in:394
msgid "Specifies whether netlink IP ADDR miss notifications are generated."
msgstr "Визначає, чи будуть ÑтворюватиÑÑ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ netlink IP ADDR miss."
-#: ../clients/common/settings-docs.h.in:389
+#: ../clients/common/settings-docs.h.in:395
msgid ""
"Specifies whether unknown source link layer addresses and IP addresses are "
"entered into the VXLAN device forwarding database."
@@ -10463,7 +10515,7 @@ msgstr ""
"Вказує, чи вводÑÑ‚ÑŒÑÑ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– адреÑи шару поÑилань та IP-адреÑи до бази "
"даних переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтроїв VXLAN."
-#: ../clients/common/settings-docs.h.in:390
+#: ../clients/common/settings-docs.h.in:396
msgid ""
"Specifies the maximum number of FDB entries. A value of zero means that the "
"kernel will store unlimited entries."
@@ -10471,24 +10523,24 @@ msgstr ""
"Вказує макÑимальну кількіÑÑ‚ÑŒ запиÑів FDB. Ðульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ”, що Ñдро "
"зберігатиме необмежену кількіÑÑ‚ÑŒ запиÑів."
-#: ../clients/common/settings-docs.h.in:391
+#: ../clients/common/settings-docs.h.in:397
msgid "If given, specifies the source IP address to use in outgoing packets."
msgstr ""
"Якщо задано, визначає початкову IP-адреÑу, Ñкою Ñлід ÑкориÑтатиÑÑ Ð´Ð»Ñ "
"вихідних пакетів."
-#: ../clients/common/settings-docs.h.in:392
+#: ../clients/common/settings-docs.h.in:398
msgid ""
"If given, specifies the parent interface name or parent connection UUID."
msgstr ""
"Якщо задано, визначає назву батьківÑького інтерфейÑу або UUID батьківÑького "
"з'єднаннÑ."
-#: ../clients/common/settings-docs.h.in:393
+#: ../clients/common/settings-docs.h.in:399
msgid "Specifies whether ARP proxy is turned on."
msgstr "Визначає, чи увімкнено ARP-прокÑÑ–."
-#: ../clients/common/settings-docs.h.in:394
+#: ../clients/common/settings-docs.h.in:400
msgid ""
"Specifies the unicast destination IP address to use in outgoing packets when "
"the destination link layer address is not known in the VXLAN device "
@@ -10499,11 +10551,11 @@ msgstr ""
"переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтроїв VXLAN, або IP-адреÑа універÑальної транÑлÑції, з "
"Ñкою Ñлід вÑтановити зв'Ñзок."
-#: ../clients/common/settings-docs.h.in:395
+#: ../clients/common/settings-docs.h.in:401
msgid "Specifies whether route short circuit is turned on."
msgstr "Визначає, чи увімкнено коротке Ð·Ð°Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ñƒ."
-#: ../clients/common/settings-docs.h.in:396
+#: ../clients/common/settings-docs.h.in:402
msgid ""
"Specifies the maximum UDP source port to communicate to the remote VXLAN "
"tunnel endpoint."
@@ -10511,7 +10563,7 @@ msgstr ""
"Визначає макÑимальний початковий порт UDP Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ даними із віддаленою "
"кінцевою точкою тунелю VXLAN."
-#: ../clients/common/settings-docs.h.in:397
+#: ../clients/common/settings-docs.h.in:403
msgid ""
"Specifies the minimum UDP source port to communicate to the remote VXLAN "
"tunnel endpoint."
@@ -10519,16 +10571,16 @@ msgstr ""
"Визначає мінімальний початковий порт UDP Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ даними із віддаленою "
"кінцевою точкою тунелю VXLAN."
-#: ../clients/common/settings-docs.h.in:398
+#: ../clients/common/settings-docs.h.in:404
msgid "Specifies the TOS value to use in outgoing packets."
msgstr "Визначає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TOS, Ñке Ñлід викориÑтовувати Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… пакетів."
-#: ../clients/common/settings-docs.h.in:399
+#: ../clients/common/settings-docs.h.in:405
msgid "Specifies the time-to-live value to use in outgoing packets."
msgstr ""
"Визначає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу життÑ, Ñке Ñлід викориÑтовувати Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… пакетів."
-#: ../clients/common/settings-docs.h.in:400
+#: ../clients/common/settings-docs.h.in:406
msgid ""
"The P2P device that should be connected to. Currently, this is the only way "
"to create or join a group."
@@ -10536,7 +10588,7 @@ msgstr ""
"ПриÑтрій P2P, з Ñким Ñлід вÑтановити з'єднаннÑ. У поточній верÑÑ–Ñ— це єдиний "
"ÑпоÑіб ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ або Ð´Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ неї."
-#: ../clients/common/settings-docs.h.in:401
+#: ../clients/common/settings-docs.h.in:407
msgid ""
"The Wi-Fi Display (WFD) Information Elements (IEs) to set. Wi-Fi Display "
"requires a protocol specific information element to be set in certain Wi-Fi "
@@ -10550,7 +10602,7 @@ msgstr ""
"Вказати ці елементи з метою вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° тут. Цей параметр Ñ” "
"кориÑним лише Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— клієнта диÑÐ¿Ð»ÐµÑ Wi-Fi."
-#: ../clients/common/settings-docs.h.in:402
+#: ../clients/common/settings-docs.h.in:408
msgid ""
"Flags indicating which mode of WPS is to be used. There's little point in "
"changing the default setting as NetworkManager will automatically determine "
@@ -10560,7 +10612,7 @@ msgstr ""
"типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ варто, оÑкільки NetworkManager автоматично визначає "
"найкращий режим."
-#: ../clients/common/settings-docs.h.in:403
+#: ../clients/common/settings-docs.h.in:409
msgid ""
"If specified, this connection will only apply to the WiMAX device whose MAC "
"address matches. This property does not change the MAC address of the device "
@@ -10570,7 +10622,7 @@ msgstr ""
"відповідною адреÑою MAC. Ð¦Ñ Ð²Ð»Ð°ÑтивіÑÑ‚ÑŒ не змінює MAC-адреÑи приÑтрою (таку "
"зміну називають підміною MAC). ЗаÑтаріле: 1"
-#: ../clients/common/settings-docs.h.in:404
+#: ../clients/common/settings-docs.h.in:410
msgid ""
"Network Service Provider (NSP) name of the WiMAX network this connection "
"should use. Deprecated: 1"
@@ -10578,7 +10630,7 @@ msgstr ""
"Ðазва надавача мережевих поÑлуг (NSP) Ð´Ð»Ñ Ð¼ÐµÑ€ÐµÐ¶Ñ– WiMAX, Ñку має "
"викориÑтовувати це з'єднаннÑ. ЗаÑтаріле: 1"
-#: ../clients/common/settings-docs.h.in:405
+#: ../clients/common/settings-docs.h.in:411
msgid ""
"The use of fwmark is optional and is by default off. Setting it to 0 "
"disables it. Otherwise, it is a 32-bit fwmark for outgoing packets. Note "
@@ -10590,7 +10642,7 @@ msgstr ""
"fwmark Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… пакетів. Зауважте, що Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«ip4-auto-default-route» "
"або «ip6-auto-default-route» неÑвним чином призводить до вибору fwmark."
-#: ../clients/common/settings-docs.h.in:406
+#: ../clients/common/settings-docs.h.in:412
msgid ""
"Whether to enable special handling of the IPv4 default route. If enabled, "
"the IPv4 default route from wireguard.peer-routes will be placed to a "
@@ -10618,11 +10670,11 @@ msgstr ""
"Ñ– не буде жодного вузла, Ñкий викориÑтовує типовий маршрут (default-route) у "
"дозволених IP-адреÑах (allowed-ips)."
-#: ../clients/common/settings-docs.h.in:407
+#: ../clients/common/settings-docs.h.in:413
msgid "Like ip4-auto-default-route, but for the IPv6 default route."
msgstr "Те Ñаме, що ip4-auto-default-route, але Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ маршруту IPv6."
-#: ../clients/common/settings-docs.h.in:408
+#: ../clients/common/settings-docs.h.in:414
msgid ""
"The listen-port. If listen-port is not specified, the port will be chosen "
"randomly when the interface comes up."
@@ -10630,7 +10682,7 @@ msgstr ""
"Порт Ð´Ð»Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° дані. Якщо порт Ð´Ð»Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° дані не вказано, "
"номер буде вибрано випадковим чином під Ñ‡Ð°Ñ Ð¿Ñ–Ð´Ð½ÑÑ‚Ñ‚Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу."
-#: ../clients/common/settings-docs.h.in:409
+#: ../clients/common/settings-docs.h.in:415
msgid ""
"If non-zero, only transmit packets of the specified size or smaller, "
"breaking larger packets up into multiple fragments. If zero a default MTU is "
@@ -10643,7 +10695,7 @@ msgstr ""
"відміну від параметра MTU wg-quick, тут не берутьÑÑ Ð´Ð¾ уваги поточні "
"маршрути на момент активації."
-#: ../clients/common/settings-docs.h.in:410
+#: ../clients/common/settings-docs.h.in:416
msgid ""
"Whether to automatically add routes for the AllowedIPs ranges of the peers. "
"If TRUE (the default), NetworkManager will automatically add routes in the "
@@ -10665,15 +10717,15 @@ msgstr ""
"«0.0.0.0/0» або «::/0», а Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ увімкнено ipv4.never-default або ipv6."
"never-default, маршрут вузла Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ вузла не буде додано автоматично."
-#: ../clients/common/settings-docs.h.in:411
+#: ../clients/common/settings-docs.h.in:417
msgid "The 256 bit private-key in base64 encoding."
msgstr "256-бітовий закритий ключ у кодуванні base64."
-#: ../clients/common/settings-docs.h.in:412
+#: ../clients/common/settings-docs.h.in:418
msgid "Flags indicating how to handle the \"private-key\" property."
msgstr "Прапорці, Ñкі позначають, Ñк оброблÑти влаÑтивіÑÑ‚ÑŒ «private-key»."
-#: ../clients/common/settings-docs.h.in:413
+#: ../clients/common/settings-docs.h.in:419
msgid ""
"IEEE 802.15.4 channel. A positive integer or -1, meaning \"do not set, use "
"whatever the device is already set to\"."
@@ -10681,7 +10733,7 @@ msgstr ""
"Канал IEEE 802.15.4. Додане ціле Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ -1, що означає «не "
"вÑтановлювати, викориÑтовувати той, Ñкий вже вÑтановлено приÑтроєм»."
-#: ../clients/common/settings-docs.h.in:414
+#: ../clients/common/settings-docs.h.in:420
msgid ""
"If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) "
"MAC layer device whose permanent MAC address matches."
@@ -10689,7 +10741,7 @@ msgstr ""
"Якщо вказано, це з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°ÑтоÑовуватиметьÑÑ Ð»Ð¸ÑˆÐµ до приÑтрою шару MAC "
"IEEE 802.15.4 (WPAN) із відповідною Ñталою адреÑою MAC."
-#: ../clients/common/settings-docs.h.in:415
+#: ../clients/common/settings-docs.h.in:421
msgid ""
"IEEE 802.15.4 channel page. A positive integer or -1, meaning \"do not set, "
"use whatever the device is already set to\"."
@@ -10697,11 +10749,11 @@ msgstr ""
"Сторінка каналу IEEE 80215.4. Додане ціле Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ -1, що означає «не "
"вÑтановлювати, викориÑтовувати ту, Ñку вже вÑтановлено приÑтроєм»."
-#: ../clients/common/settings-docs.h.in:416
+#: ../clients/common/settings-docs.h.in:422
msgid "IEEE 802.15.4 Personal Area Network (PAN) identifier."
msgstr "Ідентифікатор Personal Area Network (PAN) IEEE 802.15.4."
-#: ../clients/common/settings-docs.h.in:417
+#: ../clients/common/settings-docs.h.in:423
msgid "Short IEEE 802.15.4 address to be used within a restricted environment."
msgstr ""
"Коротка адреÑа IEEE 802.15.4, Ñку Ñлід викориÑтовувати у обмеженому "
@@ -10797,7 +10849,7 @@ msgstr "Wi-Fi"
msgid "Wi-Fi connection %d"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Wi-Fi %d"
-#: ../clients/tui/nm-editor-utils.c:145 ../libnm-core/nm-connection.c:2702
+#: ../clients/tui/nm-editor-utils.c:145 ../libnm-core/nm-connection.c:2704
#: ../libnm/nm-device.c:1670
msgid "InfiniBand"
msgstr "InfiniBand"
@@ -10825,9 +10877,9 @@ msgstr "DSL"
msgid "DSL connection %d"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ DSL %d"
-#: ../clients/tui/nm-editor-utils.c:172 ../libnm-core/nm-connection.c:2694
+#: ../clients/tui/nm-editor-utils.c:172 ../libnm-core/nm-connection.c:2696
#: ../libnm/nm-device.c:1672
-#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5420
+#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5464
msgid "Bond"
msgstr "Прив'Ñзка"
@@ -10836,9 +10888,9 @@ msgstr "Прив'Ñзка"
msgid "Bond connection %d"
msgstr "Прив'Ñзане з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %d"
-#: ../clients/tui/nm-editor-utils.c:181 ../libnm-core/nm-connection.c:2698
+#: ../clients/tui/nm-editor-utils.c:181 ../libnm-core/nm-connection.c:2700
#: ../libnm/nm-device.c:1676
-#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5828
+#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5872
msgid "Bridge"
msgstr "МіÑток"
@@ -10847,9 +10899,9 @@ msgstr "МіÑток"
msgid "Bridge connection %d"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ñ–Ñтка %d"
-#: ../clients/tui/nm-editor-utils.c:190 ../libnm-core/nm-connection.c:2696
+#: ../clients/tui/nm-editor-utils.c:190 ../libnm-core/nm-connection.c:2698
#: ../libnm/nm-device.c:1674
-#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5491
+#: ../src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c:5535
msgid "Team"
msgstr "Команда"
@@ -10859,7 +10911,7 @@ msgid "Team connection %d"
msgstr "Командне з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ %d"
#: ../clients/tui/nm-editor-utils.c:199 ../clients/tui/nmt-page-vlan.c:62
-#: ../libnm-core/nm-connection.c:2700 ../libnm/nm-device.c:1678
+#: ../libnm-core/nm-connection.c:2702 ../libnm/nm-device.c:1678
msgid "VLAN"
msgstr "VLAN"
@@ -12003,34 +12055,34 @@ msgstr "невідома назва параметра"
msgid "duplicate setting name"
msgstr "Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ параметра"
-#: ../libnm-core/nm-connection.c:1421
+#: ../libnm-core/nm-connection.c:1422
msgid "setting not found"
msgstr "параметра не знайдено"
-#: ../libnm-core/nm-connection.c:1474 ../libnm-core/nm-connection.c:1499
-#: ../libnm-core/nm-connection.c:1524
+#: ../libnm-core/nm-connection.c:1475 ../libnm-core/nm-connection.c:1500
+#: ../libnm-core/nm-connection.c:1525
msgid "setting is required for non-slave connections"
msgstr "Ð´Ð»Ñ Ð½ÐµÐ¿Ñ–Ð´Ð»ÐµÐ³Ð»Ð¸Ñ… з'єднань потрібен параметр"
-#: ../libnm-core/nm-connection.c:1487 ../libnm-core/nm-connection.c:1512
-#: ../libnm-core/nm-connection.c:1537
+#: ../libnm-core/nm-connection.c:1488 ../libnm-core/nm-connection.c:1513
+#: ../libnm-core/nm-connection.c:1538
msgid "setting not allowed in slave connection"
msgstr "параметр не можна викориÑтовувати у підлеглому з'єднанні"
-#: ../libnm-core/nm-connection.c:1642
+#: ../libnm-core/nm-connection.c:1643
msgid "Unexpected failure to normalize the connection"
msgstr "Ðеочікувана помилка під Ñ‡Ð°Ñ Ñпроби нормалізувати з'єднаннÑ"
-#: ../libnm-core/nm-connection.c:1703
+#: ../libnm-core/nm-connection.c:1704
msgid "Unexpected failure to verify the connection"
msgstr "Ðеочікувана помилка під Ñ‡Ð°Ñ Ñпроби перевірити з'єднаннÑ"
-#: ../libnm-core/nm-connection.c:1740
+#: ../libnm-core/nm-connection.c:1741
#, c-format
msgid "unexpected uuid %s instead of %s"
msgstr "неочікуваний UUID %s заміÑÑ‚ÑŒ %s"
-#: ../libnm-core/nm-connection.c:2554 ../libnm-core/nm-setting-8021x.c:2618
+#: ../libnm-core/nm-connection.c:2555 ../libnm-core/nm-setting-8021x.c:2618
#: ../libnm-core/nm-setting-8021x.c:2641 ../libnm-core/nm-setting-8021x.c:2681
#: ../libnm-core/nm-setting-8021x.c:2704 ../libnm-core/nm-setting-8021x.c:2755
#: ../libnm-core/nm-setting-8021x.c:2773 ../libnm-core/nm-setting-8021x.c:2797
@@ -12046,14 +12098,14 @@ msgstr "неочікуваний UUID %s заміÑÑ‚ÑŒ %s"
#: ../libnm-core/nm-setting-ip-tunnel.c:371
#: ../libnm-core/nm-setting-olpc-mesh.c:81
#: ../libnm-core/nm-setting-ovs-patch.c:75 ../libnm-core/nm-setting-pppoe.c:129
-#: ../libnm-core/nm-setting-vpn.c:532 ../libnm-core/nm-setting-vxlan.c:322
-#: ../libnm-core/nm-setting-wifi-p2p.c:120 ../libnm-core/nm-setting-wimax.c:92
+#: ../libnm-core/nm-setting-vpn.c:532 ../libnm-core/nm-setting-wifi-p2p.c:120
+#: ../libnm-core/nm-setting-wimax.c:92
#: ../libnm-core/nm-setting-wireless-security.c:899
#: ../libnm-core/nm-setting-wireless.c:788
msgid "property is missing"
msgstr "не вказано влаÑтивоÑÑ‚Ñ–"
-#: ../libnm-core/nm-connection.c:2706
+#: ../libnm-core/nm-connection.c:2708
msgid "IP Tunnel"
msgstr "IP-тунель"
@@ -12062,235 +12114,247 @@ msgstr "IP-тунель"
msgid "Method returned type '%s', but expected '%s'"
msgstr "Методом повернуто тип «%s», хоча мав бути «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile-utils.c:172
+#: ../libnm-core/nm-keyfile/nm-keyfile-utils.c:174
#, c-format
msgid "Value cannot be interpreted as a list of numbers."
msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ може бути оброблено Ñк ÑпиÑок чиÑел."
-#: ../libnm-core/nm-keyfile/nm-keyfile-utils.c:301
+#: ../libnm-core/nm-keyfile/nm-keyfile-utils.c:303
#, c-format
msgid "value is not an integer in range [%lld, %lld]"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ Ñ” цілим чиÑлом у діапазоні [%lld, %lld]"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:260
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:267
msgid "ignoring missing number"
msgstr "ігноруємо пропущене чиÑло"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:272
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:279
#, c-format
msgid "ignoring invalid number '%s'"
msgstr "ігноруємо некоректне чиÑло «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:301
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:308
#, c-format
msgid "ignoring invalid %s address: %s"
msgstr "ігноруємо некоректну адреÑу %s: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:347
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:354
#, c-format
msgid "ignoring invalid gateway '%s' for %s route"
msgstr "ігноруємо некоректний шлюз «%s» Ð´Ð»Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ñƒ %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:369
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:376
#, c-format
msgid "ignoring invalid %s route: %s"
msgstr "ігноруємо некоректний маршрут %s: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:547
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:554
#, c-format
msgid "unexpected character '%c' for address %s: '%s' (position %td)"
msgstr "неочікуваний Ñимвол «%c» Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑи %s: «%s» (Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ %td)"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:563
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:570
#, c-format
msgid "unexpected character '%c' for %s: '%s' (position %td)"
msgstr "неочікуваний Ñимвол «%c» Ð´Ð»Ñ %s: «%s» (Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ %td)"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:578
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:585
#, c-format
msgid "unexpected character '%c' in prefix length for %s: '%s' (position %td)"
msgstr "неочікуваний Ñимвол «%c» у префікÑÑ– довжини Ð´Ð»Ñ %s: «%s» (Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ %td)"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:595
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:602
#, c-format
msgid "garbage at the end of value %s: '%s'"
msgstr "зайві дані наприкінці Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s: «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:605
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:612
#, c-format
msgid "deprecated semicolon at the end of value %s: '%s'"
msgstr "заÑтаріла крапка з комою наприкінці Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s: «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:624
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:631
#, c-format
msgid "invalid prefix length for %s '%s', defaulting to %d"
msgstr "некоректний Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð´Ð»Ñ %s «%s», повертаємоÑÑ Ð´Ð¾ типового, %d"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:636
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:643
#, c-format
msgid "missing prefix length for %s '%s', defaulting to %d"
msgstr "пропущено Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð´Ð»Ñ %s «%s», повертаємоÑÑ Ð´Ð¾ типового, %d"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:979
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:986
+#: ../libnm-core/nm-setting-ovs-external-ids.c:320
#: ../libnm-core/nm-setting-user.c:372
#, c-format
msgid "invalid value for \"%s\": %s"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s»: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1019
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1064
#, c-format
msgid "ignoring invalid DNS server IPv%c address '%s'"
msgstr "ігноруємо некоректну адреÑу IPv%c Ñервера DNS «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1114
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1159
msgid "ignoring invalid MAC address"
msgstr "ігноруємо некоректну MAC-адреÑу"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1362
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1235
+#, c-format
+msgid "ignoring invalid bond option %s%s%s = %s%s%s: %s"
+msgstr "ігноруємо некоректний параметр bond %s%s%s = %s%s%s: %s"
+
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1425
msgid "ignoring invalid SSID"
msgstr "ігноруємо некоректний SSID"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1380
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1443
msgid "ignoring invalid raw password"
msgstr "ігноруємо некоректний необроблений пароль"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1521
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1584
msgid "invalid key/cert value"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°/Ñертифіката"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1536
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1599
#, c-format
msgid "invalid key/cert value path \"%s\""
msgstr "некоректний шлÑÑ… до ключа/Ñертифіката, «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1561
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1658
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1624
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1721
#, c-format
msgid "certificate or key file '%s' does not exist"
msgstr "файла Ñертифіката або ключа «%s» не Ñ–Ñнує"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1574
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1637
#, c-format
msgid "invalid PKCS#11 URI \"%s\""
msgstr "некоректна адреÑа PKCS#11 «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1620
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1683
msgid "invalid key/cert value data:;base64, is not base64"
msgstr "некоректні дані Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°/Ñертифіката data:;base64, не Ñ” base64"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1633
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1696
msgid "invalid key/cert value data:;base64,file://"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°/Ñертифіката data:;base64,file://"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1674
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1737
msgid "invalid key/cert value is not a valid blob"
msgstr ""
"некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°/Ñертифіката, не Ñ” коректним Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» не Ñ” "
"коректним великим бінарним об'єктом"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1776
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1839
#, c-format
msgid "invalid parity value '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð½Ð¾ÑÑ‚Ñ–, «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1798
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3211
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1861
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3334
#, c-format
msgid "invalid setting: %s"
msgstr "некоректний параметр: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1818
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1881
#, c-format
msgid "ignoring invalid team configuration: %s"
msgstr "ігноруємо некоректне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1901
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:1964
#, c-format
msgid "invalid qdisc: %s"
msgstr "некоректний qdisc: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:1951
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:2014
#, c-format
msgid "invalid tfilter: %s"
msgstr "некоректний tfilter: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3036
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3159
#, c-format
msgid "error loading setting value: %s"
msgstr "помилка під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°: %s"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3067
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3079
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3098
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3110
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3122
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3184
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3196
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3190
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3202
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3221
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3233
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3245
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3307
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3319
msgid "value cannot be interpreted as integer"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ може бути оброблено Ñк ціле чиÑло"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3152
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3275
#, c-format
msgid "ignoring invalid byte element '%u' (not between 0 and 255 inclusive)"
msgstr ""
"ігноруємо некоректний байтовий елемент «%u» (не у діапазоні від 0 до 255, "
"включно)"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3236
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3359
#, c-format
msgid "invalid setting name '%s'"
msgstr "некоректна назва параметра, «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3283
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3406
#, c-format
msgid "invalid key '%s.%s'"
msgstr "некоректний ключ «%s.%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3299
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3422
#, c-format
msgid "key '%s.%s' is not boolean"
msgstr "ключ «%s.%s» не Ñ” булевим значеннÑм"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3316
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3439
#, c-format
msgid "key '%s.%s' is not a uint32"
msgstr "ключ «%s.%s» не Ñ” значеннÑм uint32"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3373
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3496
#, c-format
msgid "invalid peer public key in section '%s'"
msgstr "некоректний відкритий ключ вузла у розділі «%s»"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3388
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3511
#, c-format
msgid "key '%s.%s' is not a valid 256 bit key in base64 encoding"
msgstr "ключ «%s.%s» не є коректним 256-бітовим ключем у кодуванні base64"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3411
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3534
#, c-format
msgid "key '%s.%s' is not a valid secret flag"
msgstr "ключ «%s.%s» не Ñ” коректним прапорцем реєÑтраційних даних"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3434
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3557
#, c-format
msgid "key '%s.%s' is not a integer in range 0 to 2^32"
msgstr "ключ «%s.%s» не Ñ” цілими чиÑлом у діапазоні від 0 до 2^32"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3450
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3573
#, c-format
msgid "key '%s.%s' is not a valid endpoint"
msgstr "ключ «%s.%s» не є коректною кінцевою точкою"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3476
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3599
#, c-format
msgid "key '%s.%s' has invalid allowed-ips"
msgstr "Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° «%s.%s» вказано некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ allowed-ips"
-#: ../libnm-core/nm-keyfile/nm-keyfile.c:3491
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:3614
#, c-format
msgid "peer '%s' is invalid: %s"
msgstr "вузол «%s» є некоректним: %s"
+#: ../libnm-core/nm-keyfile/nm-keyfile.c:4105
+#, c-format
+#| msgid "rule is invalid: %s"
+msgid "the profile is not valid: %s"
+msgstr "профіль є некоректним: %s"
+
#: ../libnm-core/nm-libnm-core-aux/nm-libnm-core-aux.c:286
#, c-format
msgid "'%s' is not valid: properties should be specified as 'key=value'"
@@ -12336,19 +12400,19 @@ msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«name» — «%s»"
msgid "attribute '%s' is invalid for \"%s\""
msgstr "атрибут «%s» Ñ” некоректним Ð´Ð»Ñ Â«%s»"
-#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:279
+#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:321
msgid "property cannot be an empty string"
msgstr "влаÑтивіÑÑ‚ÑŒ не може бути порожнім Ñ€Ñдком"
-#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:296
+#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:338
msgid "property cannot be longer than 255 bytes"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– не може бути довшим за 255 байтів"
-#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:307
+#: ../libnm-core/nm-libnm-core-intern/nm-libnm-core-utils.c:349
msgid "property cannot contain any nul bytes"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– не може міÑтити нульових байтів"
-#: ../libnm-core/nm-setting-6lowpan.c:78
+#: ../libnm-core/nm-setting-6lowpan.c:78 ../libnm-core/nm-setting-veth.c:80
#, c-format
msgid "property is not specified"
msgstr "влаÑтивіÑÑ‚ÑŒ не вказано"
@@ -12362,7 +12426,7 @@ msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» не відповідає «%s=%s»"
#: ../libnm-core/nm-setting-6lowpan.c:117
#: ../libnm-core/nm-setting-ip-tunnel.c:344
#: ../libnm-core/nm-setting-macsec.c:301 ../libnm-core/nm-setting-macvlan.c:122
-#: ../libnm-core/nm-setting-vlan.c:608 ../libnm-core/nm-setting-vxlan.c:359
+#: ../libnm-core/nm-setting-vlan.c:608 ../libnm-core/nm-setting-vxlan.c:352
#, c-format
msgid "'%s' is neither an UUID nor an interface name"
msgstr "«%s» не Ñ” ні UUID, ні назвою інтерфейÑу"
@@ -12431,7 +12495,7 @@ msgstr ""
#: ../libnm-core/nm-setting-wimax.c:104
#: ../libnm-core/nm-setting-wireless-security.c:956
#: ../libnm-core/nm-setting-wireless-security.c:984
-#: ../libnm-core/nm-setting.c:1266
+#: ../libnm-core/nm-setting.c:1240
msgid "property is empty"
msgstr "влаÑтивіÑÑ‚ÑŒ Ñ” порожньою"
@@ -12465,7 +12529,7 @@ msgstr "можна вмикати лише Ð´Ð»Ñ Ð·'єднань Ethernet"
#: ../libnm-core/nm-setting-wireless.c:884
#: ../libnm-core/nm-setting-wireless.c:896
#: ../libnm-core/nm-setting-wireless.c:909 ../libnm-core/nm-setting-wpan.c:161
-#: ../libnm-core/nm-utils.c:4517
+#: ../libnm-core/nm-utils.c:4528
msgid "property is invalid"
msgstr "влаÑтивіÑÑ‚ÑŒ Ñ” некоректною"
@@ -12517,62 +12581,62 @@ msgstr "некоректний параметр «%s»"
msgid "invalid value '%s' for option '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»"
-#: ../libnm-core/nm-setting-bond.c:817
+#: ../libnm-core/nm-setting-bond.c:813
#, c-format
msgid "mandatory option '%s' is missing"
msgstr "пропущено обов'Ñзковий параметр «%s»"
-#: ../libnm-core/nm-setting-bond.c:827
+#: ../libnm-core/nm-setting-bond.c:823
#, c-format
msgid "'%s' is not a valid value for '%s'"
msgstr "«%s» не Ñ” коректним значеннÑм «%s»"
-#: ../libnm-core/nm-setting-bond.c:840
+#: ../libnm-core/nm-setting-bond.c:836
#, c-format
msgid "'%s=%s' is incompatible with '%s > 0'"
msgstr "«%s=%s» Ñ” неÑуміÑним з «%s > 0»"
-#: ../libnm-core/nm-setting-bond.c:857
+#: ../libnm-core/nm-setting-bond.c:853
#, c-format
msgid "'%s' is not valid for the '%s' option: %s"
msgstr "«%s» Ñ” некоректним Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»: %s"
-#: ../libnm-core/nm-setting-bond.c:869
+#: ../libnm-core/nm-setting-bond.c:865
#, c-format
msgid "'%s' option is only valid for '%s=%s'"
msgstr "параметр «%s» можна викориÑтовувати, лише Ñкщо «%s=%s»"
-#: ../libnm-core/nm-setting-bond.c:882
+#: ../libnm-core/nm-setting-bond.c:878
#, c-format
msgid "'%s=%s' is not a valid configuration for '%s'"
msgstr "«%s=%s» не Ñ” коректним налаштуваннÑм Ð´Ð»Ñ Â«%s»"
-#: ../libnm-core/nm-setting-bond.c:897 ../libnm-core/nm-setting-bond.c:908
+#: ../libnm-core/nm-setting-bond.c:893 ../libnm-core/nm-setting-bond.c:904
#, c-format
msgid "'%s' option requires '%s' option to be enabled"
msgstr "викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s» вимагає Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»"
-#: ../libnm-core/nm-setting-bond.c:925 ../libnm-core/nm-setting-bond.c:936
+#: ../libnm-core/nm-setting-bond.c:921 ../libnm-core/nm-setting-bond.c:932
#, c-format
msgid "'%s' option requires '%s' option to be set"
msgstr "викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s» вимагає вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»"
-#: ../libnm-core/nm-setting-bond.c:949
+#: ../libnm-core/nm-setting-bond.c:945
#, c-format
msgid "'%s' option is only valid with mode '%s'"
msgstr "параметр «%s» є коректним лише у режимі «%s»"
-#: ../libnm-core/nm-setting-bond.c:962
+#: ../libnm-core/nm-setting-bond.c:958
#, c-format
msgid "'%s' and '%s' cannot have different values"
msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» Ñ– «%s» не можуть бути різними"
-#: ../libnm-core/nm-setting-bond.c:985
+#: ../libnm-core/nm-setting-bond.c:981
#, c-format
msgid "'%s' option should be string"
msgstr "параметр «%s» має бути Ñ€Ñдком"
-#: ../libnm-core/nm-setting-bond.c:998
+#: ../libnm-core/nm-setting-bond.c:994
#, c-format
msgid "'%s' option is not valid with mode '%s'"
msgstr "параметр «%s» є коректним з режимом «%s»"
@@ -12684,7 +12748,6 @@ msgid "MUD URL is not a valid URL"
msgstr "ÐдреÑа MUD не Ñ” коректною адреÑою"
#: ../libnm-core/nm-setting-connection.c:1334
-#| msgid "invalid permission \"%s\""
msgid "invalid permissions not in format \"user:$UNAME[:]\""
msgstr "некоректний Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð°Ð² доÑтупу, не у форматі «кориÑтувач:$UNAME[:]»"
@@ -13290,6 +13353,66 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· параметром «%s» не повинне мÐ
msgid "'%s' is not allowed in fail_mode"
msgstr "«%s» не можна викориÑтовувати у режимі fail_mode"
+#: ../libnm-core/nm-setting-ovs-external-ids.c:90
+#: ../libnm-core/nm-setting-user.c:91
+msgid "missing key"
+msgstr "не вказано ключ"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:98
+#: ../libnm-core/nm-setting-user.c:99
+msgid "key is too long"
+msgstr "ключ є надто довгим"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:105
+#: ../libnm-core/nm-setting-user.c:106
+msgid "key must be UTF8"
+msgstr "ключ має зберігатиÑÑ Ñƒ кодуванні UTF8"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:114
+#: ../libnm-core/nm-setting-user.c:153
+msgid "key contains invalid characters"
+msgstr "ключ міÑтить некоректний Ñимвол"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:123
+msgid "key cannot start with \"NM.\""
+msgstr "Ð·Ð°Ð¿Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° не починаєтьÑÑ Ð· «NM.»"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:153
+#: ../libnm-core/nm-setting-user.c:180
+msgid "value is missing"
+msgstr "не вказано значеннÑ"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:162
+#: ../libnm-core/nm-setting-user.c:189
+msgid "value is too large"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” надто великим"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:170
+#: ../libnm-core/nm-setting-user.c:197
+msgid "value is not valid UTF8"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ запиÑано у коректному кодуванні UTF8"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:313
+#: ../libnm-core/nm-setting-user.c:365
+#, c-format
+msgid "invalid key \"%s\": %s"
+msgstr "некоректний ключ «%s»: %s"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:337
+#: ../libnm-core/nm-setting-user.c:389
+#, c-format
+msgid "maximum number of user data entries reached (%u instead of %u)"
+msgstr ""
+"доÑÑгнуто макÑимальної кількоÑÑ‚Ñ– запиÑів даних кориÑтувача (%u заміÑÑ‚ÑŒ %u)"
+
+#: ../libnm-core/nm-setting-ovs-external-ids.c:365
+msgid ""
+"OVS external IDs can only be added to a profile of type OVS bridge/port/"
+"interface"
+msgstr ""
+"Зовнішні ідентифікатори OVS можна додавати лише до профілів типу міÑток, "
+"порт або Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ OVS"
+
#: ../libnm-core/nm-setting-ovs-interface.c:93
#, c-format
msgid "'%s' is not a valid interface type"
@@ -13509,18 +13632,6 @@ msgstr "«%s»: некоректний ідентифікатор кориÑту
msgid "'%s': invalid group ID"
msgstr "«%s»: некоректний ідентифікатор групи"
-#: ../libnm-core/nm-setting-user.c:91
-msgid "missing key"
-msgstr "не вказано ключ"
-
-#: ../libnm-core/nm-setting-user.c:99
-msgid "key is too long"
-msgstr "ключ є надто довгим"
-
-#: ../libnm-core/nm-setting-user.c:106
-msgid "key must be UTF8"
-msgstr "ключ має зберігатиÑÑ Ñƒ кодуванні UTF8"
-
#: ../libnm-core/nm-setting-user.c:131
msgid "key requires a '.' for a namespace"
msgstr "Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñтору назв у ключі має бути «.»"
@@ -13529,36 +13640,15 @@ msgstr "Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñтору назв у ключі ма
msgid "key cannot contain \"..\""
msgstr "у запиÑÑ– ключа не може міÑтитиÑÑ Â«..»"
-#: ../libnm-core/nm-setting-user.c:153
-msgid "key contains invalid characters"
-msgstr "ключ міÑтить некоректний Ñимвол"
-
-#: ../libnm-core/nm-setting-user.c:180
-msgid "value is missing"
-msgstr "не вказано значеннÑ"
-
-#: ../libnm-core/nm-setting-user.c:189
-msgid "value is too large"
-msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” надто великим"
-
-#: ../libnm-core/nm-setting-user.c:197
-msgid "value is not valid UTF8"
-msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ запиÑано у коректному кодуванні UTF8"
-
#: ../libnm-core/nm-setting-user.c:322
msgid "maximum number of user data entries reached"
msgstr "доÑÑгнуто макÑимальної кількоÑÑ‚Ñ– запиÑів даних кориÑтувача"
-#: ../libnm-core/nm-setting-user.c:365
+#: ../libnm-core/nm-setting-veth.c:89
#, c-format
-msgid "invalid key \"%s\": %s"
-msgstr "некоректний ключ «%s»: %s"
-
-#: ../libnm-core/nm-setting-user.c:389
-#, c-format
-msgid "maximum number of user data entries reached (%u instead of %u)"
-msgstr ""
-"доÑÑгнуто макÑимальної кількоÑÑ‚Ñ– запиÑів даних кориÑтувача (%u заміÑÑ‚ÑŒ %u)"
+#| msgid "'%s' is not a valid interface type"
+msgid "'%s' is not a valid interface name"
+msgstr "«%s» не Ñ” коректною назвою інтерфейÑу"
#: ../libnm-core/nm-setting-vlan.c:633
#, c-format
@@ -13586,7 +13676,7 @@ msgstr "не можна вÑтановлювати connection.multi-connect дл
msgid "setting contained a secret with an empty name"
msgstr "параметри міÑтив пароль з порожньою назвою"
-#: ../libnm-core/nm-setting-vpn.c:638 ../libnm-core/nm-setting.c:2152
+#: ../libnm-core/nm-setting-vpn.c:638 ../libnm-core/nm-setting.c:2126
msgid "not a secret property"
msgstr "не Ñ” влаÑтивіÑÑ‚ÑŽ паролÑ"
@@ -13603,17 +13693,12 @@ msgstr "назва реєÑтраційного запиÑу не може буÑ
msgid "secret flags property not found"
msgstr "влаÑтивіÑÑ‚ÑŒ прапорців паролів не знайдено"
-#: ../libnm-core/nm-setting-vxlan.c:335
+#: ../libnm-core/nm-setting-vxlan.c:329 ../libnm-core/nm-setting-vxlan.c:340
#, c-format
-msgid "'%s' is not a valid IP address"
-msgstr "«%s» Ñ” некоректною IP-адреÑою"
+msgid "'%s' is not a valid IP%s address"
+msgstr "«%s» Ñ” некоректною IP-адреÑою у форматі IP%s"
-#: ../libnm-core/nm-setting-vxlan.c:346
-#, c-format
-msgid "'%s' is not a valid IP%c address"
-msgstr "«%s» Ñ” некоректною IP-адреÑою у форматі IP%c"
-
-#: ../libnm-core/nm-setting-vxlan.c:370
+#: ../libnm-core/nm-setting-vxlan.c:363
#, c-format
msgid "%d is greater than local port max %d"
msgstr "%d перевищує макÑимальний припуÑтимий номер локального порту, %d"
@@ -13781,7 +13866,7 @@ msgstr "«%s» потребує вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–
msgid "'%s' requires '%s' and '%s' property"
msgstr "«%s» потребує «%s» Ñ– влаÑтивоÑÑ‚Ñ– «%s»"
-#: ../libnm-core/nm-setting-wireless.c:981 ../libnm-core/nm-team-utils.c:2254
+#: ../libnm-core/nm-setting-wireless.c:981 ../libnm-core/nm-team-utils.c:2253
#, c-format
msgid "invalid value"
msgstr "некоректне значеннÑ"
@@ -13819,335 +13904,335 @@ msgstr "Ñторінку має бути вказано чиÑлом від %d Ð
msgid "channel must not be between %d and %d"
msgstr "канал має бути вказано чиÑлом від %d до %d"
-#: ../libnm-core/nm-setting.c:821
+#: ../libnm-core/nm-setting.c:795
#, c-format
msgid "duplicate property"
msgstr "Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–"
-#: ../libnm-core/nm-setting.c:841
+#: ../libnm-core/nm-setting.c:815
#, c-format
msgid "unknown property"
msgstr "невідома влаÑтивіÑÑ‚ÑŒ"
-#: ../libnm-core/nm-setting.c:922 ../libnm-core/nm-setting.c:976
+#: ../libnm-core/nm-setting.c:896 ../libnm-core/nm-setting.c:950
#, c-format
msgid "can't set property of type '%s' from value of type '%s'"
msgstr "не вдалоÑÑ Ð²Ñтановити влаÑтивіÑÑ‚ÑŒ типу «%s» зі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ «%s»"
-#: ../libnm-core/nm-setting.c:943 ../libnm-core/nm-setting.c:959
+#: ../libnm-core/nm-setting.c:917 ../libnm-core/nm-setting.c:933
#, c-format
msgid "failed to set property: %s"
msgstr "не вдалоÑÑ Ð²Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–: %s"
-#: ../libnm-core/nm-setting.c:996
+#: ../libnm-core/nm-setting.c:970
#, c-format
msgid "can not set property: %s"
msgstr "не вдалоÑÑ Ð²Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–: %s"
-#: ../libnm-core/nm-setting.c:2042
+#: ../libnm-core/nm-setting.c:2016
msgid "secret not found"
msgstr "не знайдено ключа"
-#: ../libnm-core/nm-team-utils.c:1532 ../libnm-core/nm-team-utils.c:1549
+#: ../libnm-core/nm-team-utils.c:1531 ../libnm-core/nm-team-utils.c:1548
#, c-format
msgid "invalid D-Bus property \"%s\""
msgstr "некоректна влаÑтивіÑÑ‚ÑŒ D-Bus «%s»"
-#: ../libnm-core/nm-team-utils.c:1561
+#: ../libnm-core/nm-team-utils.c:1560
#, c-format
msgid "duplicate D-Bus property \"%s\""
msgstr "Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– D-Bus «%s»"
-#: ../libnm-core/nm-team-utils.c:1581
+#: ../libnm-core/nm-team-utils.c:1580
#, c-format
msgid "invalid D-Bus property \"%s\" for \"%s\""
msgstr "некоректна влаÑтивіÑÑ‚ÑŒ D-Bus «%s» Ð´Ð»Ñ Â«%s»"
-#: ../libnm-core/nm-team-utils.c:1653
+#: ../libnm-core/nm-team-utils.c:1652
#, c-format
msgid "unknown link-watcher name \"%s\""
msgstr "некоректна назва заÑобу ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° зв'Ñзком, «%s»"
-#: ../libnm-core/nm-team-utils.c:2240
+#: ../libnm-core/nm-team-utils.c:2239
#, c-format
msgid "value out or range"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð° припуÑтимим діапазоном"
-#: ../libnm-core/nm-team-utils.c:2275
+#: ../libnm-core/nm-team-utils.c:2274
#, c-format
msgid "invalid runner-tx-hash"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ runner-tx-hash"
-#: ../libnm-core/nm-team-utils.c:2304
+#: ../libnm-core/nm-team-utils.c:2303
#, c-format
msgid "%s is only allowed for runner %s"
msgstr "%s можна викориÑтовувати лише Ð´Ð»Ñ Ð·Ð°Ñобу запуÑку %s"
-#: ../libnm-core/nm-team-utils.c:2314
+#: ../libnm-core/nm-team-utils.c:2313
#, c-format
msgid "%s is only allowed for runners %s"
msgstr "%s можна викориÑтовувати лише Ð´Ð»Ñ Ð·Ð°Ñобів запуÑку %s"
-#: ../libnm-core/nm-team-utils.c:2335
+#: ../libnm-core/nm-team-utils.c:2334
#, c-format
msgid "cannot set parameters for lacp and activebackup runners together"
msgstr ""
"не можна вÑтановлювати параметри Ð´Ð»Ñ Ð·Ð°Ñобів запуÑку lacp Ñ– activebackup "
"одночаÑно"
-#: ../libnm-core/nm-team-utils.c:2349
+#: ../libnm-core/nm-team-utils.c:2348
#, c-format
msgid "missing link watcher"
msgstr "не вказано заÑобу ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° зв'Ñзком"
-#: ../libnm-core/nm-team-utils.c:2375
+#: ../libnm-core/nm-team-utils.c:2374
#, c-format
msgid "team config exceeds size limit"
msgstr "Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ порушують Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ розміру"
-#: ../libnm-core/nm-team-utils.c:2386
+#: ../libnm-core/nm-team-utils.c:2385
#, c-format
msgid "team config is not valid UTF-8"
msgstr "файл налаштувань team не є коректними даними у кодуванні UTF-8"
-#: ../libnm-core/nm-team-utils.c:2397
+#: ../libnm-core/nm-team-utils.c:2396
#: ../src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c:9909
#, c-format
msgid "invalid json"
msgstr "некоректний код JSON"
-#: ../libnm-core/nm-team-utils.c:2561
+#: ../libnm-core/nm-team-utils.c:2560
#, c-format
msgid "invalid D-Bus type \"%s\""
msgstr "некоректний тип D-Bus «%s»"
-#: ../libnm-core/nm-team-utils.c:2600
+#: ../libnm-core/nm-team-utils.c:2599
#, c-format
msgid "invalid link-watchers: %s"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ link-watchers: %s"
-#: ../libnm-core/nm-utils.c:2288
+#: ../libnm-core/nm-utils.c:2299
#, c-format
msgid "'%s' is not a valid handle."
msgstr "«%s» не Ñ” коректним деÑкриптором."
-#: ../libnm-core/nm-utils.c:2436
+#: ../libnm-core/nm-utils.c:2447
#, c-format
msgid "'%s' unexpected: parent already specified."
msgstr "Ðеочікуване «%s»: батьківÑький Ð·Ð°Ð¿Ð¸Ñ Ð²Ð¶Ðµ вказано."
-#: ../libnm-core/nm-utils.c:2454
+#: ../libnm-core/nm-utils.c:2465
#, c-format
msgid "invalid handle: '%s'"
msgstr "некоректний деÑкриптор: «%s»"
-#: ../libnm-core/nm-utils.c:2476
+#: ../libnm-core/nm-utils.c:2487
msgid "parent not specified."
msgstr "не вказано батьківÑький запиÑ."
-#: ../libnm-core/nm-utils.c:2540
+#: ../libnm-core/nm-utils.c:2551
#, c-format
msgid "unsupported qdisc option: '%s'."
msgstr "непідтримуваний параметр qdisc: «%s»."
-#: ../libnm-core/nm-utils.c:2670
+#: ../libnm-core/nm-utils.c:2681
msgid "action name missing."
msgstr "не вказано назви дії."
-#: ../libnm-core/nm-utils.c:2696
+#: ../libnm-core/nm-utils.c:2707
#, c-format
msgid "unsupported action option: '%s'."
msgstr "непідтримуваний параметр дії: «%s»."
-#: ../libnm-core/nm-utils.c:2835
+#: ../libnm-core/nm-utils.c:2846
msgid "invalid action: "
msgstr "некоректна діÑ: "
-#: ../libnm-core/nm-utils.c:2839
+#: ../libnm-core/nm-utils.c:2850
#, c-format
msgid "unsupported tfilter option: '%s'."
msgstr "непідтримуваний параметр tfilter: «%s»."
-#: ../libnm-core/nm-utils.c:3440
+#: ../libnm-core/nm-utils.c:3451
#, c-format
msgid "failed stat file %s: %s"
msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані щодо файла %s: %s"
-#: ../libnm-core/nm-utils.c:3451
+#: ../libnm-core/nm-utils.c:3462
#, c-format
msgid "not a file (%s)"
msgstr "не є файлом (%s)"
-#: ../libnm-core/nm-utils.c:3462
+#: ../libnm-core/nm-utils.c:3473
#, c-format
msgid "invalid file owner %d for %s"
msgstr "некоректний влаÑник файла, %d, %s"
-#: ../libnm-core/nm-utils.c:3474
+#: ../libnm-core/nm-utils.c:3485
#, c-format
msgid "file permissions for %s"
msgstr "файлові права доÑтупу до %s"
-#: ../libnm-core/nm-utils.c:3484
+#: ../libnm-core/nm-utils.c:3495
#, c-format
msgid "reject %s"
msgstr "відмовити %s"
-#: ../libnm-core/nm-utils.c:3504
+#: ../libnm-core/nm-utils.c:3515
#, c-format
msgid "path is not absolute (%s)"
msgstr "шлÑÑ… не Ñ” абÑолютним (%s)"
-#: ../libnm-core/nm-utils.c:3519
+#: ../libnm-core/nm-utils.c:3530
#, c-format
msgid "Plugin file does not exist (%s)"
msgstr "Файла додатка не Ñ–Ñнує (%s)"
-#: ../libnm-core/nm-utils.c:3528
+#: ../libnm-core/nm-utils.c:3539
#, c-format
msgid "Plugin is not a valid file (%s)"
msgstr "Додаток не є коректним файлом (%s)"
-#: ../libnm-core/nm-utils.c:3539
+#: ../libnm-core/nm-utils.c:3550
#, c-format
msgid "libtool archives are not supported (%s)"
msgstr "Підтримки архівів libtool не передбачено (%s)"
-#: ../libnm-core/nm-utils.c:3615
+#: ../libnm-core/nm-utils.c:3626
#, c-format
msgid "Could not find \"%s\" binary"
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ виконуваний файл «%s»"
-#: ../libnm-core/nm-utils.c:4468
+#: ../libnm-core/nm-utils.c:4479
msgid "unknown secret flags"
msgstr "невідомі прапорці реєÑтраційних даних"
-#: ../libnm-core/nm-utils.c:4478
+#: ../libnm-core/nm-utils.c:4489
msgid "conflicting secret flags"
msgstr "конфлікт прапорців реєÑтраційних даних"
-#: ../libnm-core/nm-utils.c:4489
+#: ../libnm-core/nm-utils.c:4500
msgid "secret flags must not be \"not-required\""
msgstr "прапорці реєÑтраційних даних не можуть бути «not-required»"
-#: ../libnm-core/nm-utils.c:4497
+#: ../libnm-core/nm-utils.c:4508
msgid "unsupported secret flags"
msgstr "непідтримувані прапорці реєÑтраційних даних"
-#: ../libnm-core/nm-utils.c:4527
+#: ../libnm-core/nm-utils.c:4538
msgid "can't be simultaneously disabled and enabled"
msgstr "не може бути одночаÑно вимкнено Ñ– увімкнено"
-#: ../libnm-core/nm-utils.c:4535
+#: ../libnm-core/nm-utils.c:4546
msgid "WPS is required"
msgstr "Потрібна WPS"
-#: ../libnm-core/nm-utils.c:4603
+#: ../libnm-core/nm-utils.c:4614
#, c-format
msgid "not a valid ethernet MAC address for mask at position %lld"
msgstr "некоректна адреÑа MAC ethernet Ð´Ð»Ñ Ð¼Ð°Ñки у позиції %lld"
-#: ../libnm-core/nm-utils.c:4622
+#: ../libnm-core/nm-utils.c:4633
#, c-format
msgid "not a valid ethernet MAC address #%u at position %lld"
msgstr "некоректна адреÑа MAC ethernet #%u у позиції %lld"
-#: ../libnm-core/nm-utils.c:5301
+#: ../libnm-core/nm-utils.c:5288
msgid "not valid utf-8"
msgstr "некоректні дані UTF-8"
-#: ../libnm-core/nm-utils.c:5322 ../libnm-core/nm-utils.c:5375
+#: ../libnm-core/nm-utils.c:5309 ../libnm-core/nm-utils.c:5362
msgid "is not a JSON object"
msgstr "не є об'єктом JSON"
-#: ../libnm-core/nm-utils.c:5351
+#: ../libnm-core/nm-utils.c:5338
msgid "value is NULL"
msgstr "значеннÑм Ñ” NULL"
-#: ../libnm-core/nm-utils.c:5351
+#: ../libnm-core/nm-utils.c:5338
msgid "value is empty"
msgstr "порожнє значеннÑ"
-#: ../libnm-core/nm-utils.c:5363
+#: ../libnm-core/nm-utils.c:5350
#, c-format
msgid "invalid JSON at position %d (%s)"
msgstr "некоректний код JSON на позиції %d (%s)"
-#: ../libnm-core/nm-utils.c:5493 ../libnm-core/nm-utils.c:5513
+#: ../libnm-core/nm-utils.c:5480 ../libnm-core/nm-utils.c:5500
msgid "unterminated escape sequence"
msgstr "незавершена екранована поÑлідовніÑÑ‚ÑŒ"
-#: ../libnm-core/nm-utils.c:5539
+#: ../libnm-core/nm-utils.c:5526
#, c-format
msgid "unknown attribute '%s'"
msgstr "невідомий атрибут «%s»"
-#: ../libnm-core/nm-utils.c:5557
+#: ../libnm-core/nm-utils.c:5544
#, c-format
msgid "missing key-value separator '%c' after '%s'"
msgstr "пропущено роздільник пар ключ-Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%c» піÑÐ»Ñ Â«%s»"
-#: ../libnm-core/nm-utils.c:5577
+#: ../libnm-core/nm-utils.c:5564
#, c-format
msgid "invalid uint32 value '%s' for attribute '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uint32 «%s» атрибута «%s»"
-#: ../libnm-core/nm-utils.c:5591
+#: ../libnm-core/nm-utils.c:5578
#, c-format
msgid "invalid int32 value '%s' for attribute '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ int32 «%s» атрибута «%s»"
-#: ../libnm-core/nm-utils.c:5604
+#: ../libnm-core/nm-utils.c:5591
#, c-format
msgid "invalid uint64 value '%s' for attribute '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uint64 «%s» атрибута «%s»"
-#: ../libnm-core/nm-utils.c:5617
+#: ../libnm-core/nm-utils.c:5604
#, c-format
msgid "invalid uint8 value '%s' for attribute '%s'"
msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uint8 «%s» атрибута «%s»"
-#: ../libnm-core/nm-utils.c:5631
+#: ../libnm-core/nm-utils.c:5618
#, c-format
msgid "invalid boolean value '%s' for attribute '%s'"
msgstr "некоректне булеве Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» атрибута «%s»"
-#: ../libnm-core/nm-utils.c:5645
+#: ../libnm-core/nm-utils.c:5632
#, c-format
msgid "unsupported attribute '%s' of type '%s'"
msgstr "непідтримуваний атрибут «%s» типу «%s»"
-#: ../libnm-core/nm-utils.c:5947
+#: ../libnm-core/nm-utils.c:5934
#, c-format
msgid "Bridge VLANs %d and %d are not sorted by ascending vid"
msgstr "VLAN міÑтка %d Ñ– %d не упорÑдковано за зроÑтаннÑм vid"
-#: ../libnm-core/nm-utils.c:5971
+#: ../libnm-core/nm-utils.c:5958
#, c-format
msgid "duplicate bridge VLAN vid %u"
msgstr "дублікат міÑтка vid VLAN %u"
-#: ../libnm-core/nm-utils.c:5983
+#: ../libnm-core/nm-utils.c:5970
msgid "only one VLAN can be the PVID"
msgstr "лише одна з VLAN може бути PVID"
-#: ../libnm-core/nm-utils.c:6028
+#: ../libnm-core/nm-utils.c:6015
#, c-format
msgid "unknown flags 0x%x"
msgstr "невідомі прапорці 0x%x"
-#: ../libnm-core/nm-utils.c:6040
+#: ../libnm-core/nm-utils.c:6027
msgid ""
"'fqdn-no-update' and 'fqdn-serv-update' flags cannot be set at the same time"
msgstr ""
"не можна одночаÑно вÑтановлювати прапорці «fqdn-no-update» Ñ– «fqdn-serv-"
"update»"
-#: ../libnm-core/nm-utils.c:6051
+#: ../libnm-core/nm-utils.c:6038
msgid "'fqdn-clear-flags' flag is incompatible with other FQDN flags"
msgstr "прапорець «fqdn-clear-flags» Ñ” неÑуміÑним із іншими прапорцÑми FQDN"
-#: ../libnm-core/nm-utils.c:6059
+#: ../libnm-core/nm-utils.c:6046
msgid "DHCPv6 does not support the E (encoded) FQDN flag"
msgstr "у DHCPv6 не передбачено підтримки Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ E (закодовано) FQDN"
@@ -14290,29 +14375,29 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ Ñ” фіктивним з'єднаннÑм."
msgid "The connection did not specify an interface name."
msgstr "У запиÑÑ– з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ вказано назви інтерфейÑу."
-#: ../libnm/nm-device-ethernet.c:190
+#: ../libnm/nm-device-ethernet.c:187
msgid "The connection was not an Ethernet or PPPoE connection."
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ Ñ” з'єднаннÑм Ethernet або PPPoE."
-#: ../libnm/nm-device-ethernet.c:207
+#: ../libnm/nm-device-ethernet.c:204
msgid "The connection and device differ in S390 subchannels."
msgstr "У підканалах S390 виÑвлено відмінніÑÑ‚ÑŒ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ– приÑтрою."
-#: ../libnm/nm-device-ethernet.c:224
+#: ../libnm/nm-device-ethernet.c:221
#, c-format
msgid "Invalid device MAC address %s."
msgstr "Ðекоректна MAC-адреÑа приÑтрою, %s."
-#: ../libnm/nm-device-ethernet.c:232
+#: ../libnm/nm-device-ethernet.c:229
msgid "The MACs of the device and the connection do not match."
msgstr "ÐдреÑи MAC приÑтрою Ñ– з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ збігаютьÑÑ."
-#: ../libnm/nm-device-ethernet.c:244
+#: ../libnm/nm-device-ethernet.c:241
#, c-format
msgid "Invalid MAC in the blacklist: %s."
msgstr "Ðекоректний Ð·Ð°Ð¿Ð¸Ñ MAC у «чорному» ÑпиÑку: %s."
-#: ../libnm/nm-device-ethernet.c:253
+#: ../libnm/nm-device-ethernet.c:250
#, c-format
msgid "Device MAC (%s) is blacklisted by the connection."
msgstr "MAC приÑтрою (%s) додано до «чорного» ÑпиÑку з'єднаннÑ."
@@ -14718,36 +14803,36 @@ msgstr ""
"Правила ÑиÑтеми заборонÑÑŽÑ‚ÑŒ Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ придатноÑÑ‚Ñ– до "
"з'єднаннÑ"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2314
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2335
#, c-format
msgid "object class '%s' has no property named '%s'"
msgstr "у клаÑÑ– об'єктів «%s» немає влаÑтивоÑÑ‚Ñ– із назвою «%s»"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2323
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2344
#, c-format
msgid "property '%s' of object class '%s' is not writable"
msgstr "влаÑтивіÑÑ‚ÑŒ «%s» клаÑу об'єктів «%s» Ñ” непридатною до запиÑу"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2332
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2353
#, c-format
msgid ""
"construct property \"%s\" for object '%s' can't be set after construction"
msgstr ""
"влаÑтивіÑÑ‚ÑŒ construct «%s» об'єкта «%s» не можна вÑтановлювати піÑÐ»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2343
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2364
#, c-format
msgid "'%s::%s' is not a valid property name; '%s' is not a GObject subtype"
msgstr "«%s::%s» не Ñ” коректною назвою влаÑтивоÑÑ‚Ñ–; «%s» не Ñ” підтипом GObject"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2356
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2377
#, c-format
msgid "unable to set property '%s' of type '%s' from value of type '%s'"
msgstr ""
"не вдалоÑÑ Ð²Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «%s» типу «%s» на оÑнові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
"типу «%s»"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:2368
+#: ../shared/nm-glib-aux/nm-shared-utils.c:2389
#, c-format
msgid ""
"value \"%s\" of type '%s' is invalid or out of range for property '%s' of "
@@ -14756,48 +14841,48 @@ msgstr ""
"Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» типу «%s» Ñ” некоректним Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ– «%s» типу «%s» або не "
"належить до припуÑтимого діапазону значень"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5104
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5137
msgid "interface name is missing"
msgstr "пропущено назву інтерфейÑу"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5112
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5145
msgid "interface name is too short"
msgstr "назва інтерфейÑу Ñ” надто короткою"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5120
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5153
msgid "interface name is reserved"
msgstr "таку назву інтерфейÑу зарезервовано"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5133
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5166
msgid "interface name contains an invalid character"
msgstr "назва інтерфейÑу міÑтить некоректний Ñимвол"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5141
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5174
msgid "interface name is longer than 15 characters"
msgstr "назва інтерфейÑу Ñ” довшою за 15 Ñимволів"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5166
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5199
#, c-format
msgid "'%%' is not allowed in interface names"
msgstr "«%%» не можна викориÑтовувати у назвах інтерфейÑів"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5178
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5211
#, c-format
msgid "'%s' is not allowed as interface name"
msgstr "«%s» не можна викориÑтовувати Ñк назву інтерфейÑу"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5200
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5233
msgid ""
"interface name must be alphanumerical with no forward or backward slashes"
msgstr ""
"назва інтерфейÑу має ÑкладатиÑÑ Ð· літер Ñ– цифр без початкового Ñ– "
"завершального Ñимволів похилої риÑки"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5217
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5250
msgid "interface name must not be empty"
msgstr "назва інтерфейÑу не може бути порожньою"
-#: ../shared/nm-glib-aux/nm-shared-utils.c:5225
+#: ../shared/nm-glib-aux/nm-shared-utils.c:5258
msgid "interface name must be UTF-8 encoded"
msgstr "назва інтерфейÑу має бути набором Ñимволів у кодуванні UTF-8"
@@ -14948,12 +15033,12 @@ msgid "DUN connection must include a GSM or CDMA setting"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ DUN має включати параметр GSM або CDMA"
#: ../src/devices/bluetooth/nm-device-bt.c:359
-#: ../src/devices/wwan/nm-modem-broadband.c:818
+#: ../src/devices/wwan/nm-modem-broadband.c:821
msgid "GSM connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ GSM"
#: ../src/devices/bluetooth/nm-device-bt.c:361
-#: ../src/devices/wwan/nm-modem-broadband.c:843
+#: ../src/devices/wwan/nm-modem-broadband.c:846
msgid "CDMA connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ CDMA"
@@ -14981,11 +15066,11 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ñ–Ñтка"
msgid "Dummy connection"
msgstr "Фіктивне з'єднаннÑ"
-#: ../src/devices/nm-device-ethernet.c:1608
+#: ../src/devices/nm-device-ethernet.c:1620
msgid "PPPoE connection"
msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ PPPoE"
-#: ../src/devices/nm-device-ethernet.c:1608
+#: ../src/devices/nm-device-ethernet.c:1620
msgid "Wired connection"
msgstr "Дротове з'єднаннÑ"
diff --git a/shared/c-rbtree/AUTHORS b/shared/c-rbtree/AUTHORS
index b59660c5ee..ed4e72e915 100644
--- a/shared/c-rbtree/AUTHORS
+++ b/shared/c-rbtree/AUTHORS
@@ -34,4 +34,6 @@ COPYRIGHT: (ordered alphabetically)
AUTHORS: (ordered alphabetically)
David Rheinsberg <david.rheinsberg@gmail.com>
+ Kay Sievers <kay@vrfy.org>
+ Thomas Haller <thaller@redhat.com>
Tom Gundersen <teg@jklm.no>
diff --git a/shared/nm-glib-aux/nm-c-list.h b/shared/nm-glib-aux/nm-c-list.h
index e19774dd91..173861c63c 100644
--- a/shared/nm-glib-aux/nm-c-list.h
+++ b/shared/nm-glib-aux/nm-c-list.h
@@ -17,11 +17,6 @@
_what &&c_list_contains(list, &_what->member); \
})
-/* iterate over the list backwards. */
-#define nm_c_list_for_each_entry_prev(_iter, _list, _m) \
- for (_iter = c_list_entry((_list)->prev, __typeof__(*_iter), _m); &(_iter)->_m != (_list); \
- _iter = c_list_entry((_iter)->_m.prev, __typeof__(*_iter), _m))
-
/*****************************************************************************/
typedef struct {
diff --git a/shared/nm-glib-aux/nm-glib.h b/shared/nm-glib-aux/nm-glib.h
index 9794e1fbce..00d9261df7 100644
--- a/shared/nm-glib-aux/nm-glib.h
+++ b/shared/nm-glib-aux/nm-glib.h
@@ -683,7 +683,7 @@ g_hash_table_steal_extended(GHashTable * hash_table,
gpointer *_stolen_value = (stolen_value); \
\
/* we cannot allow NULL arguments, because then we would leak the values in
- * the compat implementation. */ \
+ * the compat implementation. */ \
g_assert(_stolen_key); \
g_assert(_stolen_value); \
\
diff --git a/shared/nm-glib-aux/nm-hash-utils.h b/shared/nm-glib-aux/nm-hash-utils.h
index 1cfdcaf6e9..6028bb3d74 100644
--- a/shared/nm-glib-aux/nm-hash-utils.h
+++ b/shared/nm-glib-aux/nm-hash-utils.h
@@ -416,6 +416,14 @@ nm_hash_obfuscate_ptr(guint static_seed, gconstpointer val)
* values in a global context. */
#define NM_HASH_OBFUSCATE_PTR(ptr) (nm_hash_obfuscate_ptr(1678382159u, ptr))
+#define NM_HASH_OBFUSCATE_PTR_STR(ptr, buf) \
+ ({ \
+ gconstpointer _ptr = (ptr); \
+ \
+ _ptr ? nm_sprintf_buf(buf, "[" NM_HASH_OBFUSCATE_PTR_FMT "]", NM_HASH_OBFUSCATE_PTR(_ptr)) \
+ : "(null)"; \
+ })
+
static inline const char *
nm_hash_obfuscated_ptr_str(gconstpointer ptr, char buf[static 17])
{
diff --git a/shared/nm-glib-aux/nm-logging-fwd.h b/shared/nm-glib-aux/nm-logging-fwd.h
index ee75b71325..2f550e5f9f 100644
--- a/shared/nm-glib-aux/nm-logging-fwd.h
+++ b/shared/nm-glib-aux/nm-logging-fwd.h
@@ -57,15 +57,11 @@ typedef enum { /*< skip >*/
/* aliases: */
LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6,
LOGD_IP = LOGD_IP4 | LOGD_IP6,
-} NMLogDomain;
-static inline NMLogDomain
-LOGD_DHCP_from_addr_family(int addr_family)
-{
- nm_assert_addr_family(addr_family);
+#define LOGD_DHCPX(is_ipv4) ((is_ipv4) ? LOGD_DHCP4 : LOGD_DHCP6)
+#define LOGD_IPX(is_ipv4) ((is_ipv4) ? LOGD_IP4 : LOGD_IP6)
- return addr_family == AF_INET6 ? LOGD_DHCP6 : LOGD_DHCP4;
-}
+} NMLogDomain;
/* Log levels */
typedef enum { /*< skip >*/
diff --git a/shared/nm-glib-aux/nm-macros-internal.h b/shared/nm-glib-aux/nm-macros-internal.h
index d495dd8eb5..f7e7a97cae 100644
--- a/shared/nm-glib-aux/nm-macros-internal.h
+++ b/shared/nm-glib-aux/nm-macros-internal.h
@@ -656,11 +656,11 @@ NM_G_ERROR_MSG(GError *error)
#if _NM_CC_SUPPORT_GENERIC
/* returns @value, if the type of @value matches @type.
- * This requires support for C11 _Generic(). If no support is
- * present, this returns @value directly.
- *
- * It's useful to check the let the compiler ensure that @value is
- * of a certain type. */
+ * This requires support for C11 _Generic(). If no support is
+ * present, this returns @value directly.
+ *
+ * It's useful to check the let the compiler ensure that @value is
+ * of a certain type. */
#define _NM_ENSURE_TYPE(type, value) (_Generic((value), type : (value)))
#define _NM_ENSURE_TYPE_CONST(type, value) \
(_Generic((value), const type \
@@ -770,7 +770,7 @@ NM_G_ERROR_MSG(GError *error)
{ \
return NM_CACHED_QUARK(string); \
} \
- struct _dummy_struct_for_trailing_semicolon
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
/*****************************************************************************/
diff --git a/shared/nm-glib-aux/nm-shared-utils.c b/shared/nm-glib-aux/nm-shared-utils.c
index 7f766871f6..991ab6571f 100644
--- a/shared/nm-glib-aux/nm-shared-utils.c
+++ b/shared/nm-glib-aux/nm-shared-utils.c
@@ -19,6 +19,9 @@
#include "nm-errno.h"
#include "nm-str-buf.h"
+G_STATIC_ASSERT(sizeof(NMEtherAddr) == 6);
+G_STATIC_ASSERT(_nm_alignof(NMEtherAddr) == 1);
+
G_STATIC_ASSERT(sizeof(NMUtilsNamedEntry) == sizeof(const char *));
G_STATIC_ASSERT(G_STRUCT_OFFSET(NMUtilsNamedValue, value_ptr) == sizeof(const char *));
@@ -434,6 +437,24 @@ nm_g_variant_singleton_u_0(void)
/*****************************************************************************/
+GHashTable *
+nm_utils_strdict_clone(GHashTable *src)
+{
+ GHashTable * dst;
+ GHashTableIter iter;
+ const char * key;
+ const char * val;
+
+ if (!src)
+ return NULL;
+
+ dst = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, g_free);
+ g_hash_table_iter_init(&iter, src);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &val))
+ g_hash_table_insert(dst, g_strdup(key), g_strdup(val));
+ return dst;
+}
+
/* Convert a hash table with "char *" keys and values to an "a{ss}" GVariant.
* The keys will be sorted asciibetically.
* Returns a floating reference.
@@ -3066,6 +3087,18 @@ nm_utils_fd_read_loop_exact(int fd, void *buf, size_t nbytes, bool do_poll)
/*****************************************************************************/
+void
+nm_utils_named_value_clear_with_g_free(NMUtilsNamedValue *val)
+{
+ if (val) {
+ gs_free gpointer x_name = NULL;
+ gs_free gpointer x_value = NULL;
+
+ x_name = (gpointer) g_steal_pointer(&val->name);
+ x_value = g_steal_pointer(&val->value_ptr);
+ }
+}
+
G_STATIC_ASSERT(G_STRUCT_OFFSET(NMUtilsNamedValue, name) == 0);
NMUtilsNamedValue *
@@ -3262,6 +3295,62 @@ nm_utils_hash_values_to_array(GHashTable * hash,
return arr;
}
+/*****************************************************************************/
+
+/**
+ * nm_utils_hashtable_equal:
+ * @a: one #GHashTable
+ * @b: other #GHashTable
+ * @treat_null_as_empty: if %TRUE, when either @a or @b is %NULL, it is
+ * treated like an empty hash. It means, a %NULL hash will compare equal
+ * to an empty hash.
+ * @equal_func: the equality function, for comparing the values.
+ * If %NULL, the values are not compared. In that case, the function
+ * only checks, if both dictionaries have the same keys -- according
+ * to @b's key equality function.
+ * Note that the values of @a will be passed as first argument
+ * to @equal_func.
+ *
+ * Compares two hash tables, whether they have equal content.
+ * This only makes sense, if @a and @b have the same key types and
+ * the same key compare-function.
+ *
+ * Returns: %TRUE, if both dictionaries have the same content.
+ */
+gboolean
+nm_utils_hashtable_equal(const GHashTable *a,
+ const GHashTable *b,
+ gboolean treat_null_as_empty,
+ GEqualFunc equal_func)
+{
+ guint n;
+ GHashTableIter iter;
+ gconstpointer key, v_a, v_b;
+
+ if (a == b)
+ return TRUE;
+ if (!treat_null_as_empty) {
+ if (!a || !b)
+ return FALSE;
+ }
+
+ n = a ? g_hash_table_size((GHashTable *) a) : 0;
+ if (n != (b ? g_hash_table_size((GHashTable *) b) : 0))
+ return FALSE;
+
+ if (n > 0) {
+ g_hash_table_iter_init(&iter, (GHashTable *) a);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &v_a)) {
+ if (!g_hash_table_lookup_extended((GHashTable *) b, key, NULL, (gpointer *) &v_b))
+ return FALSE;
+ if (equal_func && !equal_func(v_a, v_b))
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
static gboolean
_utils_hashtable_equal(GHashTable * hash_a,
GHashTable * hash_b,
@@ -3301,7 +3390,7 @@ _utils_hashtable_equal(GHashTable * hash_a,
}
/**
- * nm_utils_hashtable_equal:
+ * nm_utils_hashtable_cmp_equal:
* @a: (allow-none): the hash table or %NULL
* @b: (allow-none): the other hash table or %NULL
* @cmp_values: (allow-none): if %NULL, only the keys
@@ -3316,10 +3405,10 @@ _utils_hashtable_equal(GHashTable * hash_a,
* @cmp_values is given) all values are the same.
*/
gboolean
-nm_utils_hashtable_equal(const GHashTable *a,
- const GHashTable *b,
- GCompareDataFunc cmp_values,
- gpointer user_data)
+nm_utils_hashtable_cmp_equal(const GHashTable *a,
+ const GHashTable *b,
+ GCompareDataFunc cmp_values,
+ gpointer user_data)
{
GHashTable *hash_a = (GHashTable *) a;
GHashTable *hash_b = (GHashTable *) b;
@@ -3374,7 +3463,7 @@ _hashtable_cmp_func(gconstpointer a, gconstpointer b, gpointer user_data)
* @a: (allow-none): the hash to compare. May be %NULL.
* @b: (allow-none): the other hash to compare. May be %NULL.
* @do_fast_precheck: if %TRUE, assume that the hashes are equal
- * and that it is worth calling nm_utils_hashtable_equal() first.
+ * and that it is worth calling nm_utils_hashtable_cmp_equal() first.
* That requires, that both hashes have the same equals function
* which is compatible with the @cmp_keys function.
* @cmp_keys: the compare function for keys. Usually, the hash/equal function
@@ -3827,62 +3916,6 @@ nm_utils_array_find_binary_search(gconstpointer list,
/*****************************************************************************/
/**
- * nm_utils_hash_table_equal:
- * @a: one #GHashTable
- * @b: other #GHashTable
- * @treat_null_as_empty: if %TRUE, when either @a or @b is %NULL, it is
- * treated like an empty hash. It means, a %NULL hash will compare equal
- * to an empty hash.
- * @equal_func: the equality function, for comparing the values.
- * If %NULL, the values are not compared. In that case, the function
- * only checks, if both dictionaries have the same keys -- according
- * to @b's key equality function.
- * Note that the values of @a will be passed as first argument
- * to @equal_func.
- *
- * Compares two hash tables, whether they have equal content.
- * This only makes sense, if @a and @b have the same key types and
- * the same key compare-function.
- *
- * Returns: %TRUE, if both dictionaries have the same content.
- */
-gboolean
-nm_utils_hash_table_equal(const GHashTable * a,
- const GHashTable * b,
- gboolean treat_null_as_empty,
- NMUtilsHashTableEqualFunc equal_func)
-{
- guint n;
- GHashTableIter iter;
- gconstpointer key, v_a, v_b;
-
- if (a == b)
- return TRUE;
- if (!treat_null_as_empty) {
- if (!a || !b)
- return FALSE;
- }
-
- n = a ? g_hash_table_size((GHashTable *) a) : 0;
- if (n != (b ? g_hash_table_size((GHashTable *) b) : 0))
- return FALSE;
-
- if (n > 0) {
- g_hash_table_iter_init(&iter, (GHashTable *) a);
- while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &v_a)) {
- if (!g_hash_table_lookup_extended((GHashTable *) b, key, NULL, (gpointer *) &v_b))
- return FALSE;
- if (equal_func && !equal_func(v_a, v_b))
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-/*****************************************************************************/
-
-/**
* nm_utils_get_start_time_for_pid:
* @pid: the process identifier
* @out_state: return the state character, like R, S, Z. See `man 5 proc`.
diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h
index 23884a3777..dd094a2cbd 100644
--- a/shared/nm-glib-aux/nm-shared-utils.h
+++ b/shared/nm-glib-aux/nm-shared-utils.h
@@ -88,14 +88,25 @@ typedef struct {
} NMEtherAddr;
#define NM_ETHER_ADDR_FORMAT_STR "%02X:%02X:%02X:%02X:%02X:%02X"
-#define NM_ETHER_ADDR_FORMAT_VAL(x) \
- (x).ether_addr_octet[0], (x).ether_addr_octet[1], (x).ether_addr_octet[2], \
- (x).ether_addr_octet[3], (x).ether_addr_octet[4], (x).ether_addr_octet[5]
-#define NM_ETHER_ADDR_INIT(...) \
- { \
- .ether_addr_octet = {__VA_ARGS__}, \
+
+#define NM_ETHER_ADDR_FORMAT_VAL(x) \
+ (x)->ether_addr_octet[0], (x)->ether_addr_octet[1], (x)->ether_addr_octet[2], \
+ (x)->ether_addr_octet[3], (x)->ether_addr_octet[4], (x)->ether_addr_octet[5]
+
+#define _NM_ETHER_ADDR_INIT(a0, a1, a2, a3, a4, a5) \
+ { \
+ .ether_addr_octet = { \
+ (a0), \
+ (a1), \
+ (a2), \
+ (a3), \
+ (a4), \
+ (a5), \
+ }, \
}
+#define NM_ETHER_ADDR_INIT(...) ((NMEtherAddr) _NM_ETHER_ADDR_INIT(__VA_ARGS__))
+
static inline int
nm_ether_addr_cmp(const NMEtherAddr *a, const NMEtherAddr *b)
{
@@ -318,6 +329,8 @@ gboolean nm_utils_gbytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize
GVariant *nm_utils_gbytes_to_variant_ay(GBytes *bytes);
+GHashTable *nm_utils_strdict_clone(GHashTable *src);
+
GVariant *nm_utils_strdict_to_variant_ass(GHashTable *strdict);
GVariant *nm_utils_strdict_to_variant_asv(GHashTable *strdict);
@@ -758,8 +771,10 @@ typedef struct {
{ \
static const NMUtilsFlags2StrDesc descs[] = {__VA_ARGS__}; \
G_STATIC_ASSERT(sizeof(flags_type) <= sizeof(unsigned)); \
+ \
return nm_utils_flags2str(descs, G_N_ELEMENTS(descs), flags, buf, len); \
- };
+ } \
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
const char *nm_utils_flags2str(const NMUtilsFlags2StrDesc *descs,
gsize n_descs,
@@ -796,7 +811,8 @@ case v: \
g_snprintf(buf, len, "(%" int_fmt ")", val); \
} \
return buf; \
- }
+ } \
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
#define NM_UTILS_ENUM2STR_DEFINE(fcn_name, lookup_type, ...) \
NM_UTILS_ENUM2STR_DEFINE_FULL(fcn_name, lookup_type, "d", __VA_ARGS__)
@@ -918,6 +934,8 @@ _nm_g_slice_free_fcn_define(1) _nm_g_slice_free_fcn_define(2) _nm_g_slice_free_f
* error reason. Depending on the usage, this might indicate a bug because
* usually the target object should stay alive as long as there are pending
* operations.
+ * @NM_UTILS_ERROR_NOT_READY: the failure is related to being currently
+ * not ready to perform the operation.
*
* @NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE: used for a very particular
* purpose during nm_device_check_connection_compatible() to indicate that
@@ -938,6 +956,7 @@ typedef enum {
NM_UTILS_ERROR_UNKNOWN = 0, /*< nick=Unknown >*/
NM_UTILS_ERROR_CANCELLED_DISPOSING, /*< nick=CancelledDisposing >*/
NM_UTILS_ERROR_INVALID_ARGUMENT, /*< nick=InvalidArgument >*/
+ NM_UTILS_ERROR_NOT_READY, /*< nick=NotReady >*/
/* the following codes have a special meaning and are exactly used for
* nm_device_check_connection_compatible() and nm_device_check_connection_available().
@@ -1214,6 +1233,27 @@ nm_g_variant_is_of_type(GVariant *value, const GVariantType *type)
return value && g_variant_is_of_type(value, type);
}
+static inline GVariant *
+nm_g_variant_new_ay_inaddr(int addr_family, gconstpointer addr)
+{
+ return g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE,
+ addr ?: &nm_ip_addr_zero,
+ nm_utils_addr_family_to_size(addr_family),
+ 1);
+}
+
+static inline GVariant *
+nm_g_variant_new_ay_in4addr(in_addr_t addr)
+{
+ return nm_g_variant_new_ay_inaddr(AF_INET, &addr);
+}
+
+static inline GVariant *
+nm_g_variant_new_ay_in6addr(const struct in6_addr *addr)
+{
+ return nm_g_variant_new_ay_inaddr(AF_INET6, addr);
+}
+
static inline void
nm_g_variant_builder_add_sv(GVariantBuilder *builder, const char *key, GVariant *val)
{
@@ -1434,6 +1474,8 @@ void nm_utils_named_value_list_sort(NMUtilsNamedValue *arr,
GCompareDataFunc compare_func,
gpointer user_data);
+void nm_utils_named_value_clear_with_g_free(NMUtilsNamedValue *val);
+
/*****************************************************************************/
gpointer *nm_utils_hash_keys_to_array(GHashTable * hash,
@@ -1457,13 +1499,18 @@ nm_utils_strdict_get_keys(const GHashTable *hash, gboolean sorted, guint *out_le
gboolean nm_utils_hashtable_equal(const GHashTable *a,
const GHashTable *b,
- GCompareDataFunc cmp_values,
- gpointer user_data);
+ gboolean treat_null_as_empty,
+ GEqualFunc equal_func);
+
+gboolean nm_utils_hashtable_cmp_equal(const GHashTable *a,
+ const GHashTable *b,
+ GCompareDataFunc cmp_values,
+ gpointer user_data);
static inline gboolean
nm_utils_hashtable_same_keys(const GHashTable *a, const GHashTable *b)
{
- return nm_utils_hashtable_equal(a, b, NULL, NULL);
+ return nm_utils_hashtable_cmp_equal(a, b, NULL, NULL);
}
int nm_utils_hashtable_cmp(const GHashTable *a,
@@ -1508,6 +1555,13 @@ nm_g_array_len(const GArray *arr)
return arr ? arr->len : 0u;
}
+static inline void
+nm_g_array_unref(GArray *arr)
+{
+ if (arr)
+ g_array_unref(arr);
+}
+
#define nm_g_array_append_new(arr, type) \
({ \
GArray *const _arr = (arr); \
@@ -1522,6 +1576,55 @@ nm_g_array_len(const GArray *arr)
/*****************************************************************************/
+static inline GPtrArray *
+nm_g_ptr_array_ref(GPtrArray *arr)
+{
+ return arr ? g_ptr_array_ref(arr) : NULL;
+}
+
+static inline void
+nm_g_ptr_array_unref(GPtrArray *arr)
+{
+ if (arr)
+ g_ptr_array_unref(arr);
+}
+
+#define nm_g_ptr_array_set(pdst, val) \
+ ({ \
+ GPtrArray **_pdst = (pdst); \
+ GPtrArray * _val = (val); \
+ gboolean _changed = FALSE; \
+ \
+ nm_assert(_pdst); \
+ \
+ if (*_pdst != _val) { \
+ _nm_unused gs_unref_ptrarray GPtrArray *_old = *_pdst; \
+ \
+ *_pdst = nm_g_ptr_array_ref(_val); \
+ _changed = TRUE; \
+ } \
+ _changed; \
+ })
+
+#define nm_g_ptr_array_set_take(pdst, val) \
+ ({ \
+ GPtrArray **_pdst = (pdst); \
+ GPtrArray * _val = (val); \
+ gboolean _changed = FALSE; \
+ \
+ nm_assert(_pdst); \
+ \
+ if (*_pdst != _val) { \
+ _nm_unused gs_unref_ptrarray GPtrArray *_old = *_pdst; \
+ \
+ *_pdst = _val; \
+ _changed = TRUE; \
+ } else { \
+ nm_g_ptr_array_unref(_val); \
+ } \
+ _changed; \
+ })
+
static inline guint
nm_g_ptr_array_len(const GPtrArray *arr)
{
@@ -1571,6 +1674,19 @@ GPtrArray *_nm_g_ptr_array_copy(GPtrArray * array,
/*****************************************************************************/
+static inline GHashTable *
+nm_g_hash_table_ref(GHashTable *hash)
+{
+ return hash ? g_hash_table_ref(hash) : NULL;
+}
+
+static inline void
+nm_g_hash_table_unref(GHashTable *hash)
+{
+ if (hash)
+ g_hash_table_unref(hash);
+}
+
static inline guint
nm_g_hash_table_size(GHashTable *hash)
{
@@ -1614,27 +1730,16 @@ gssize nm_utils_array_find_binary_search(gconstpointer list,
/*****************************************************************************/
-typedef gboolean (*NMUtilsHashTableEqualFunc)(gconstpointer a, gconstpointer b);
-
-gboolean nm_utils_hash_table_equal(const GHashTable * a,
- const GHashTable * b,
- gboolean treat_null_as_empty,
- NMUtilsHashTableEqualFunc equal_func);
-
-/*****************************************************************************/
-
void _nm_utils_strv_sort(const char **strv, gssize len);
#define nm_utils_strv_sort(strv, len) _nm_utils_strv_sort(NM_CAST_STRV_MC(strv), len)
int
_nm_utils_strv_cmp_n(const char *const *strv1, gssize len1, const char *const *strv2, gssize len2);
-static inline gboolean
-_nm_utils_strv_equal(char **strv1, char **strv2)
-{
- return _nm_utils_strv_cmp_n((const char *const *) strv1, -1, (const char *const *) strv2, -1)
- == 0;
-}
+#define nm_utils_strv_cmp_n(strv1, len1, strv2, len2) \
+ _nm_utils_strv_cmp_n(NM_CAST_STRV_CC(strv1), (len1), NM_CAST_STRV_CC(strv2), (len2))
+
+#define nm_utils_strv_equal(strv1, strv2) (nm_utils_strv_cmp_n((strv1), -1, (strv2), -1) == 0)
/*****************************************************************************/
@@ -1851,14 +1956,14 @@ nm_strv_ptrarray_contains(const GPtrArray *strv, const char *str)
static inline int
nm_strv_ptrarray_cmp(const GPtrArray *a, const GPtrArray *b)
{
- /* _nm_utils_strv_cmp_n() will treat NULL and empty arrays the same.
+ /* nm_utils_strv_cmp_n() will treat NULL and empty arrays the same.
* That means, an empty strv array can both be represented by NULL
* and an array of length zero.
* If you need to distinguish between these case, do that yourself. */
- return _nm_utils_strv_cmp_n((const char *const *) nm_g_ptr_array_pdata(a),
- nm_g_ptr_array_len(a),
- (const char *const *) nm_g_ptr_array_pdata(b),
- nm_g_ptr_array_len(b));
+ return nm_utils_strv_cmp_n((const char *const *) nm_g_ptr_array_pdata(a),
+ nm_g_ptr_array_len(a),
+ (const char *const *) nm_g_ptr_array_pdata(b),
+ nm_g_ptr_array_len(b));
}
/*****************************************************************************/
@@ -2060,7 +2165,8 @@ _nm_utils_hwaddr_ntoa(gconstpointer addr,
{ \
unknown_val_cmd; \
} \
- }
+ } \
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
#define NM_UTILS_STRING_TABLE_LOOKUP_STRUCT_DEFINE(fcn_name, \
result_type, \
@@ -2130,6 +2236,25 @@ nm_utils_strdup_reset(char **dst, const char *src)
return TRUE;
}
+static inline gboolean
+nm_utils_strdup_reset_take(char **dst, char *src)
+{
+ char *old;
+
+ nm_assert(dst);
+ nm_assert(src != *dst);
+
+ if (nm_streq0(*dst, src)) {
+ if (src)
+ g_free(src);
+ return FALSE;
+ }
+ old = *dst;
+ *dst = src;
+ g_free(old);
+ return TRUE;
+}
+
void nm_indirect_g_free(gpointer arg);
/*****************************************************************************/
diff --git a/shared/nm-glib-aux/nm-str-buf.h b/shared/nm-glib-aux/nm-str-buf.h
index 062630a5d2..f5e0bd8fe9 100644
--- a/shared/nm-glib-aux/nm-str-buf.h
+++ b/shared/nm-glib-aux/nm-str-buf.h
@@ -31,7 +31,7 @@ typedef struct _NMStrBuf {
/*****************************************************************************/
static inline void
-_nm_str_buf_assert(NMStrBuf *strbuf)
+_nm_str_buf_assert(const NMStrBuf *strbuf)
{
nm_assert(strbuf);
nm_assert((!!strbuf->_priv_str) == (strbuf->_priv_allocated > 0));
@@ -361,6 +361,31 @@ nm_str_buf_get_str_unsafe(NMStrBuf *strbuf)
return strbuf->_priv_str;
}
+static inline char *
+nm_str_buf_get_str_at_unsafe(NMStrBuf *strbuf, gsize index)
+{
+ _nm_str_buf_assert(strbuf);
+
+ /* it is acceptable to ask for a pointer at the end of the buffer -- even
+ * if there is no data there. The caller is anyway required to take care
+ * of the length (that's the "unsafe" part), and in that case, the length
+ * is merely zero. */
+ nm_assert(index <= strbuf->allocated);
+
+ if (!strbuf->_priv_str)
+ return NULL;
+
+ return &strbuf->_priv_str[index];
+}
+
+static inline char
+nm_str_buf_get_char(const NMStrBuf *strbuf, gsize index)
+{
+ _nm_str_buf_assert(strbuf);
+ nm_assert(index < strbuf->allocated);
+ return strbuf->_priv_str[index];
+}
+
/**
* nm_str_buf_finalize:
* @strbuf: an initilized #NMStrBuf
diff --git a/shared/nm-glib-aux/tests/test-shared-general.c b/shared/nm-glib-aux/tests/test-shared-general.c
index 84e0a6f076..13dd26f240 100644
--- a/shared/nm-glib-aux/tests/test-shared-general.c
+++ b/shared/nm-glib-aux/tests/test-shared-general.c
@@ -364,8 +364,8 @@ test_strv_cmp(void)
_strv_cmp_fuzz_input((a1), _l1, &_a1_free_shallow, &_a1_free_deep, &_a1, &_a1x); \
_strv_cmp_fuzz_input((a2), _l2, &_a2_free_shallow, &_a2_free_deep, &_a2, &_a2x); \
\
- _c1 = _nm_utils_strv_cmp_n(_a1, _l1, _a2, _l2); \
- _c2 = _nm_utils_strv_cmp_n(_a2, _l2, _a1, _l1); \
+ _c1 = nm_utils_strv_cmp_n(_a1, _l1, _a2, _l2); \
+ _c2 = nm_utils_strv_cmp_n(_a2, _l2, _a1, _l1); \
if (equal) { \
g_assert_cmpint(_c1, ==, 0); \
g_assert_cmpint(_c2, ==, 0); \
@@ -376,8 +376,8 @@ test_strv_cmp(void)
\
/* Compare with self. _strv_cmp_fuzz_input() randomly swapped the arguments (_a1 and _a1x).
* Either way, the arrays must compare equal to their semantically equal alternative. */ \
- g_assert_cmpint(_nm_utils_strv_cmp_n(_a1, _l1, _a1x, _l1), ==, 0); \
- g_assert_cmpint(_nm_utils_strv_cmp_n(_a2, _l2, _a2x, _l2), ==, 0); \
+ g_assert_cmpint(nm_utils_strv_cmp_n(_a1, _l1, _a1x, _l1), ==, 0); \
+ g_assert_cmpint(nm_utils_strv_cmp_n(_a2, _l2, _a2x, _l2), ==, 0); \
\
_strv_cmp_free_deep(_a1_free_deep, _l1); \
_strv_cmp_free_deep(_a2_free_deep, _l2); \
@@ -632,9 +632,10 @@ static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
{"0", 0},
{"1", 1},
{"2", 2},
- {"3", 3}, )
+ {"3", 3}, );
- static void test_string_table_lookup(void)
+static void
+test_string_table_lookup(void)
{
const char *const args[] = {
NULL,
@@ -951,10 +952,10 @@ again:
else
g_assert(!data);
- g_assert(_nm_utils_strv_cmp_n((const char *const *) strv->pdata,
- strv->len,
- (const char *const *) strv2->pdata,
- strv2->len)
+ g_assert(nm_utils_strv_cmp_n((const char *const *) strv->pdata,
+ strv->len,
+ (const char *const *) strv2->pdata,
+ strv2->len)
== 0);
}
}
@@ -1050,7 +1051,7 @@ test_strv_dup_packed(void)
g_assert(strv_cpy);
g_assert(NM_PTRARRAY_LEN(strv_cpy) == strv_len);
if (strv_cpy)
- g_assert(_nm_utils_strv_equal((char **) strv_cpy, (char **) strv_src));
+ g_assert(nm_utils_strv_equal(strv_cpy, strv_src));
}
}
@@ -1189,8 +1190,8 @@ test_utils_hashtable_cmp(void)
}
g_assert(nm_utils_hashtable_same_keys(h1, h2));
- g_assert(nm_utils_hashtable_equal(h1, h2, NULL, NULL));
- g_assert(nm_utils_hashtable_equal(h1, h2, func_val_cmp, NULL));
+ g_assert(nm_utils_hashtable_cmp_equal(h1, h2, NULL, NULL));
+ g_assert(nm_utils_hashtable_cmp_equal(h1, h2, func_val_cmp, NULL));
g_assert(nm_utils_hashtable_cmp(h1, h2, FALSE, func_key_cmp, NULL, NULL) == 0);
g_assert(nm_utils_hashtable_cmp(h1, h2, TRUE, func_key_cmp, NULL, NULL) == 0);
g_assert(nm_utils_hashtable_cmp(h1, h2, FALSE, func_key_cmp, func_val_cmp, NULL) == 0);
@@ -1220,16 +1221,16 @@ again:
if (has_same_keys) {
g_assert(nm_utils_hashtable_same_keys(h1, h2));
- g_assert(nm_utils_hashtable_equal(h1, h2, NULL, NULL));
+ g_assert(nm_utils_hashtable_cmp_equal(h1, h2, NULL, NULL));
g_assert(nm_utils_hashtable_cmp(h1, h2, FALSE, func_key_cmp, NULL, NULL) == 0);
g_assert(nm_utils_hashtable_cmp(h1, h2, TRUE, func_key_cmp, NULL, NULL) == 0);
} else {
g_assert(!nm_utils_hashtable_same_keys(h1, h2));
- g_assert(!nm_utils_hashtable_equal(h1, h2, NULL, NULL));
+ g_assert(!nm_utils_hashtable_cmp_equal(h1, h2, NULL, NULL));
g_assert(nm_utils_hashtable_cmp(h1, h2, FALSE, func_key_cmp, NULL, NULL) != 0);
g_assert(nm_utils_hashtable_cmp(h1, h2, TRUE, func_key_cmp, NULL, NULL) != 0);
}
- g_assert(!nm_utils_hashtable_equal(h1, h2, func_val_cmp, NULL));
+ g_assert(!nm_utils_hashtable_cmp_equal(h1, h2, func_val_cmp, NULL));
g_assert(nm_utils_hashtable_cmp(h1, h2, FALSE, func_key_cmp, func_val_cmp, NULL) != 0);
g_assert(nm_utils_hashtable_cmp(h1, h2, TRUE, func_key_cmp, func_val_cmp, NULL) != 0);
}
diff --git a/shared/nm-meta-setting.c b/shared/nm-meta-setting.c
index 51b90e6f05..8d29dde28a 100644
--- a/shared/nm-meta-setting.c
+++ b/shared/nm-meta-setting.c
@@ -21,6 +21,7 @@
#include "nm-setting-ethtool.h"
#include "nm-setting-generic.h"
#include "nm-setting-gsm.h"
+#include "nm-setting-hostname.h"
#include "nm-setting-infiniband.h"
#include "nm-setting-ip-config.h"
#include "nm-setting-ip-tunnel.h"
@@ -33,6 +34,7 @@
#include "nm-setting-ovs-bridge.h"
#include "nm-setting-ovs-interface.h"
#include "nm-setting-ovs-dpdk.h"
+#include "nm-setting-ovs-external-ids.h"
#include "nm-setting-ovs-patch.h"
#include "nm-setting-ovs-port.h"
#include "nm-setting-ppp.h"
@@ -44,6 +46,7 @@
#include "nm-setting-team.h"
#include "nm-setting-tun.h"
#include "nm-setting-user.h"
+#include "nm-setting-veth.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
#include "nm-setting-vrf.h"
@@ -242,6 +245,13 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
.setting_name = NM_SETTING_GSM_SETTING_NAME,
.get_setting_gtype = nm_setting_gsm_get_type,
},
+ [NM_META_SETTING_TYPE_HOSTNAME] =
+ {
+ .meta_type = NM_META_SETTING_TYPE_HOSTNAME,
+ .setting_priority = NM_SETTING_PRIORITY_IP,
+ .setting_name = NM_SETTING_HOSTNAME_SETTING_NAME,
+ .get_setting_gtype = nm_setting_hostname_get_type,
+ },
[NM_META_SETTING_TYPE_INFINIBAND] =
{
.meta_type = NM_META_SETTING_TYPE_INFINIBAND,
@@ -312,6 +322,13 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
.setting_name = NM_SETTING_OVS_DPDK_SETTING_NAME,
.get_setting_gtype = nm_setting_ovs_dpdk_get_type,
},
+ [NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS] =
+ {
+ .meta_type = NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
+ .setting_priority = NM_SETTING_PRIORITY_AUX,
+ .setting_name = NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME,
+ .get_setting_gtype = nm_setting_ovs_external_ids_get_type,
+ },
[NM_META_SETTING_TYPE_OVS_INTERFACE] =
{
.meta_type = NM_META_SETTING_TYPE_OVS_INTERFACE,
@@ -403,6 +420,13 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
.setting_name = NM_SETTING_USER_SETTING_NAME,
.get_setting_gtype = nm_setting_user_get_type,
},
+ [NM_META_SETTING_TYPE_VETH] =
+ {
+ .meta_type = NM_META_SETTING_TYPE_VETH,
+ .setting_priority = NM_SETTING_PRIORITY_HW_BASE,
+ .setting_name = NM_SETTING_VETH_SETTING_NAME,
+ .get_setting_gtype = nm_setting_veth_get_type,
+ },
[NM_META_SETTING_TYPE_VLAN] =
{
.meta_type = NM_META_SETTING_TYPE_VLAN,
@@ -590,3 +614,31 @@ out_none:
}
/*****************************************************************************/
+
+NMSettingPriority
+nm_meta_setting_info_get_base_type_priority(const NMMetaSettingInfo *setting_info, GType gtype)
+{
+ /* Historical oddity: PPPoE is a base-type even though it's not
+ * priority 1. It needs to be sorted *after* lower-level stuff like
+ * Wi-Fi security or 802.1x for secrets, but it's still allowed as a
+ * base type.
+ */
+
+ if (setting_info) {
+ if (NM_IN_SET(setting_info->setting_priority,
+ NM_SETTING_PRIORITY_HW_BASE,
+ NM_SETTING_PRIORITY_HW_NON_BASE)
+ || gtype == NM_TYPE_SETTING_PPPOE)
+ return setting_info->setting_priority;
+ }
+
+ return NM_SETTING_PRIORITY_INVALID;
+}
+
+NMSettingPriority
+_nm_setting_type_get_base_type_priority(GType type)
+{
+ return nm_meta_setting_info_get_base_type_priority(nm_meta_setting_infos_by_gtype(type), type);
+}
+
+/*****************************************************************************/
diff --git a/shared/nm-meta-setting.h b/shared/nm-meta-setting.h
index dadf2f7217..82b387d674 100644
--- a/shared/nm-meta-setting.h
+++ b/shared/nm-meta-setting.h
@@ -119,6 +119,7 @@ typedef enum {
NM_META_SETTING_TYPE_ETHTOOL,
NM_META_SETTING_TYPE_GENERIC,
NM_META_SETTING_TYPE_GSM,
+ NM_META_SETTING_TYPE_HOSTNAME,
NM_META_SETTING_TYPE_INFINIBAND,
NM_META_SETTING_TYPE_IP_TUNNEL,
NM_META_SETTING_TYPE_IP4_CONFIG,
@@ -128,6 +129,7 @@ typedef enum {
NM_META_SETTING_TYPE_MATCH,
NM_META_SETTING_TYPE_OVS_BRIDGE,
NM_META_SETTING_TYPE_OVS_DPDK,
+ NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
NM_META_SETTING_TYPE_OVS_INTERFACE,
NM_META_SETTING_TYPE_OVS_PATCH,
NM_META_SETTING_TYPE_OVS_PORT,
@@ -141,6 +143,7 @@ typedef enum {
NM_META_SETTING_TYPE_TEAM_PORT,
NM_META_SETTING_TYPE_TUN,
NM_META_SETTING_TYPE_USER,
+ NM_META_SETTING_TYPE_VETH,
NM_META_SETTING_TYPE_VLAN,
NM_META_SETTING_TYPE_VPN,
NM_META_SETTING_TYPE_VRF,
@@ -206,4 +209,8 @@ const NMMetaSettingInfo *nm_meta_setting_infos_by_gtype(GType gtype);
/*****************************************************************************/
+NMSettingPriority nm_meta_setting_info_get_base_type_priority(const NMMetaSettingInfo *setting_info,
+ GType gtype);
+NMSettingPriority _nm_setting_type_get_base_type_priority(GType type);
+
#endif /* __NM_META_SETTING_H__ */
diff --git a/shared/nm-std-aux/c-list-util.c b/shared/nm-std-aux/c-list-util.c
index a5837edd76..b7f962ebcf 100644
--- a/shared/nm-std-aux/c-list-util.c
+++ b/shared/nm-std-aux/c-list-util.c
@@ -20,7 +20,7 @@
* pointer to @lst.
*
* The use of this function is to do a bulk update, that lets the
- * list degredate by not updating the prev pointers. At the end,
+ * list degenerate by not updating the prev pointers. At the end,
* the list can be fixed by c_list_relink().
*/
void
@@ -111,7 +111,8 @@ _c_list_sort(CList *ls, CListSortCmp cmp, const void *user_data)
/* A simple top-down, non-recursive, stable merge-sort.
*
* Maybe natural merge-sort would be better, to do better for
- * partially sorted lists. */
+ * partially sorted lists. Doing that would be much more complicated,
+ * so it's not done. */
_split:
stack_head[0].ls2 = _c_list_srt_split(stack_head[0].ls1);
if (stack_head[0].ls2) {
diff --git a/shared/nm-std-aux/c-list-util.h b/shared/nm-std-aux/c-list-util.h
index 828481e114..8f40d32133 100644
--- a/shared/nm-std-aux/c-list-util.h
+++ b/shared/nm-std-aux/c-list-util.h
@@ -42,4 +42,15 @@ c_list_length_is(const CList *list, unsigned long check_len)
return n == check_len;
}
+#define c_list_for_each_prev(_iter, _list) \
+ for (_iter = (_list)->prev; (_iter) != (_list); _iter = (_iter)->prev)
+
+#define c_list_for_each_prev_safe(_iter, _safe, _list) \
+ for (_iter = (_list)->prev, _safe = (_iter)->prev; (_iter) != (_list); \
+ _iter = (_safe), _safe = (_safe)->prev)
+
+#define c_list_for_each_entry_prev(_iter, _list, _m) \
+ for (_iter = c_list_entry((_list)->prev, __typeof__(*_iter), _m); &(_iter)->_m != (_list); \
+ _iter = c_list_entry((_iter)->_m.prev, __typeof__(*_iter), _m))
+
#endif /* __C_LIST_UTIL_H__ */
diff --git a/shared/nm-std-aux/nm-std-aux.h b/shared/nm-std-aux/nm-std-aux.h
index 762f104be3..7b06472631 100644
--- a/shared/nm-std-aux/nm-std-aux.h
+++ b/shared/nm-std-aux/nm-std-aux.h
@@ -189,6 +189,37 @@ typedef uint64_t _nm_bitwise nm_be64_t;
/*****************************************************************************/
+static inline uint32_t
+nm_add_clamped_u32(uint32_t a, uint32_t b)
+{
+ uint32_t c;
+
+ /* returns a+b, or UINT32_MAX if the result would overflow. */
+
+ c = a + b;
+ if (c < a)
+ return UINT32_MAX;
+ return c;
+}
+
+static inline unsigned
+nm_mult_clamped_u(unsigned a, unsigned b)
+{
+ unsigned c;
+
+ /* returns a*b, or UINT_MAX if the result would overflow. */
+
+ if (b == 0)
+ return 0;
+
+ c = a * b;
+
+ if (c / b != a)
+ return (unsigned) -1;
+
+ return c;
+}
+
/* glib's MIN()/MAX() macros don't have function-like behavior, in that they evaluate
* the argument possibly twice.
*
@@ -767,6 +798,21 @@ nm_steal_fd(int *p_fd)
/*****************************************************************************/
+static inline uintptr_t
+nm_ptr_to_uintptr(const void *p)
+{
+ /* in C, pointers can only be compared (with less-than or greater-than) under certain
+ * circumstances. Since uintptr_t is supposed to be able to represent the pointer
+ * as a plain integer and also support to convert the integer back to the pointer,
+ * it should be safer to compare the pointers directly.
+ *
+ * Of course, this function isn't very useful beyond that its use makes it clear
+ * that we want to compare pointers by value, which otherwise may not be valid. */
+ return (uintptr_t) p;
+}
+
+/*****************************************************************************/
+
#define NM_CMP_RETURN(c) \
do { \
const int _cc = (c); \
@@ -813,7 +859,7 @@ nm_steal_fd(int *p_fd)
* Avoid that by casting pointers to void* and then to uintptr_t. This comparison
* is not really meaningful, except that it provides some kind of stable sort order
* between pointers (that can otherwise not be compared). */
-#define NM_CMP_DIRECT_PTR(a, b) NM_CMP_DIRECT((uintptr_t)((void *) (a)), (uintptr_t)((void *) (b)))
+#define NM_CMP_DIRECT_PTR(a, b) NM_CMP_DIRECT(nm_ptr_to_uintptr(a), nm_ptr_to_uintptr(b))
#define NM_CMP_DIRECT_MEMCMP(a, b, size) NM_CMP_RETURN(memcmp((a), (b), (size)))
diff --git a/shared/nm-test-utils-impl.c b/shared/nm-test-utils-impl.c
index 57f30ea930..5ea4968a85 100644
--- a/shared/nm-test-utils-impl.c
+++ b/shared/nm-test-utils-impl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2010 - 2015 Red Hat, Inc.
*/
diff --git a/shared/nm-udev-aux/nm-udev-utils.c b/shared/nm-udev-aux/nm-udev-utils.c
index 8131c04e39..3337ff5c96 100644
--- a/shared/nm-udev-aux/nm-udev-utils.c
+++ b/shared/nm-udev-aux/nm-udev-utils.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2017 Red Hat, Inc.
*/
diff --git a/shared/nm-udev-aux/nm-udev-utils.h b/shared/nm-udev-aux/nm-udev-utils.h
index f24659eb32..00fefdd07e 100644
--- a/shared/nm-udev-aux/nm-udev-utils.h
+++ b/shared/nm-udev-aux/nm-udev-utils.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2017 Red Hat, Inc.
*/
diff --git a/shared/nm-utils/nm-test-utils.h b/shared/nm-utils/nm-test-utils.h
index 62d608c6e9..42b584c982 100644
--- a/shared/nm-utils/nm-test-utils.h
+++ b/shared/nm-utils/nm-test-utils.h
@@ -900,14 +900,16 @@ nmtst_get_rand_uint64(void)
static inline guint
nmtst_get_rand_uint(void)
{
- G_STATIC_ASSERT_EXPR(sizeof(guint32) == sizeof(guint));
- return nmtst_get_rand_uint32();
+ G_STATIC_ASSERT_EXPR((sizeof(guint) == sizeof(guint32) || (sizeof(guint) == sizeof(guint64))));
+ if (sizeof(guint32) == sizeof(guint))
+ return nmtst_get_rand_uint32();
+ return nmtst_get_rand_uint64();
}
static inline gsize
nmtst_get_rand_size(void)
{
- G_STATIC_ASSERT_EXPR(sizeof(gsize) == sizeof(guint32) || sizeof(gsize) == sizeof(guint64));
+ G_STATIC_ASSERT_EXPR((sizeof(gsize) == sizeof(guint32) || (sizeof(gsize) == sizeof(guint64))));
if (sizeof(gsize) == sizeof(guint32))
return nmtst_get_rand_uint32();
return nmtst_get_rand_uint64();
@@ -919,6 +921,17 @@ nmtst_get_rand_bool(void)
return nmtst_get_rand_uint32() % 2;
}
+static inline gboolean
+nmtst_get_rand_one_case_in(guint32 num)
+{
+ /* num=1 doesn't make much sense, because it will always return %TRUE.
+ * Still accept it, it might be that @num is calculated, so 1 might be
+ * a valid edge case. */
+ g_assert(num > 0);
+
+ return (nmtst_get_rand_uint32() % num) == 0;
+}
+
static inline gpointer
nmtst_rand_buf(GRand *rand, gpointer buffer, gsize buffer_length)
{
diff --git a/shared/nm-version-macros.h.in b/shared/nm-version-macros.h.in
index c4d6efbcbe..3d5d050027 100644
--- a/shared/nm-version-macros.h.in
+++ b/shared/nm-version-macros.h.in
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
/*
* Copyright (C) 2011, 2015 Red Hat, Inc.
*/
@@ -66,6 +66,7 @@
#define NM_VERSION_1_24 (NM_ENCODE_VERSION (1, 24, 0))
#define NM_VERSION_1_26 (NM_ENCODE_VERSION (1, 26, 0))
#define NM_VERSION_1_28 (NM_ENCODE_VERSION (1, 28, 0))
+#define NM_VERSION_1_30 (NM_ENCODE_VERSION (1, 30, 0))
/* For releases, NM_API_VERSION is equal to NM_VERSION.
*
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c
index 4739e9dd15..35b892abed 100644
--- a/src/NetworkManagerUtils.c
+++ b/src/NetworkManagerUtils.c
@@ -152,7 +152,7 @@ nm_utils_get_ip_config_method(NMConnection *connection, int addr_family)
s_con = nm_connection_get_setting_connection(connection);
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
g_return_val_if_fail(s_con != NULL, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
s_ip = nm_connection_get_setting_ip4_config(connection);
@@ -164,19 +164,15 @@ nm_utils_get_ip_config_method(NMConnection *connection, int addr_family)
return method;
}
- if (addr_family == AF_INET6) {
- g_return_val_if_fail(s_con != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
+ g_return_val_if_fail(s_con != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
- s_ip = nm_connection_get_setting_ip6_config(connection);
- if (!s_ip)
- return NM_SETTING_IP6_CONFIG_METHOD_IGNORE;
-
- method = nm_setting_ip_config_get_method(s_ip);
- g_return_val_if_fail(method != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
- return method;
- }
+ s_ip = nm_connection_get_setting_ip6_config(connection);
+ if (!s_ip)
+ return NM_SETTING_IP6_CONFIG_METHOD_IGNORE;
- g_return_val_if_reached("" /* bogus */);
+ method = nm_setting_ip_config_get_method(s_ip);
+ g_return_val_if_fail(method != NULL, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
+ return method;
}
gboolean
@@ -204,7 +200,7 @@ nm_utils_connection_has_default_route(NMConnection *connection,
}
method = nm_utils_get_ip_config_method(connection, addr_family);
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
if (NM_IN_STRSET(method,
NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL))
@@ -1312,7 +1308,7 @@ nm_utils_ip_route_attribute_to_platform(int addr_family,
else
r->table_coerced = nm_platform_route_table_coerce(table ?: (route_table ?: RT_TABLE_MAIN));
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
guint8 scope;
GET_ATTR(NM_IP_ROUTE_ATTRIBUTE_TOS, r4->tos, BYTE, byte, 0);
@@ -1338,14 +1334,14 @@ nm_utils_ip_route_attribute_to_platform(int addr_family,
if ((variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_SRC))
&& g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
if (inet_pton(addr_family, g_variant_get_string(variant, NULL), &addr) == 1) {
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
r4->pref_src = addr.addr4;
else
r6->pref_src = addr.addr6;
}
}
- if (addr_family == AF_INET6
+ if (!NM_IS_IPv4(addr_family)
&& (variant = nm_ip_route_get_attribute(s_route, NM_IP_ROUTE_ATTRIBUTE_FROM))
&& g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING)) {
int prefix;
@@ -1392,7 +1388,7 @@ nm_utils_ip_addresses_to_dbus(int addr_family,
GVariant ** out_address_data,
GVariant ** out_addresses)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
GVariantBuilder builder_data;
GVariantBuilder builder_legacy;
char addr_str[NM_UTILS_INET_ADDRSTRLEN];
@@ -1495,15 +1491,12 @@ nm_utils_ip_addresses_to_dbus(int addr_family,
g_variant_builder_add(
&builder_legacy,
"(@ayu@ay)",
- g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &address->a6.address, 16, 1),
+ nm_g_variant_new_ay_in6addr(&address->a6.address),
address->a6.plen,
- g_variant_new_fixed_array(
- G_VARIANT_TYPE_BYTE,
+ nm_g_variant_new_ay_in6addr(
(i == 0 && best_default_route)
? &NMP_OBJECT_CAST_IP6_ROUTE(best_default_route)->gateway
- : &in6addr_any,
- 16,
- 1));
+ : &in6addr_any));
}
}
}
@@ -1519,7 +1512,7 @@ nm_utils_ip_routes_to_dbus(int addr_family,
GVariant ** out_route_data,
GVariant ** out_routes)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDedupMultiIter iter;
const NMPObject *obj;
GVariantBuilder builder_data;
@@ -1622,13 +1615,12 @@ nm_utils_ip_routes_to_dbus(int addr_family,
4,
sizeof(guint32)));
} else {
- g_variant_builder_add(
- &builder_legacy,
- "(@ayu@ayu)",
- g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &r->r6.network, 16, 1),
- (guint32) r->r6.plen,
- g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, &r->r6.gateway, 16, 1),
- (guint32) r->r6.metric);
+ g_variant_builder_add(&builder_legacy,
+ "(@ayu@ayu)",
+ nm_g_variant_new_ay_in6addr(&r->r6.network),
+ (guint32) r->r6.plen,
+ nm_g_variant_new_ay_in6addr(&r->r6.gateway),
+ (guint32) r->r6.metric);
}
}
}
@@ -1636,3 +1628,203 @@ nm_utils_ip_routes_to_dbus(int addr_family,
NM_SET_OUT(out_route_data, g_variant_builder_end(&builder_data));
NM_SET_OUT(out_routes, g_variant_builder_end(&builder_legacy));
}
+
+/*****************************************************************************/
+
+typedef struct {
+ char *table;
+ char *rule;
+} ShareRule;
+
+struct _NMUtilsShareRules {
+ GArray *rules;
+};
+
+static void
+_share_rule_clear(gpointer data)
+{
+ ShareRule *rule = data;
+
+ g_free(rule->table);
+ g_free(rule->rule);
+}
+
+NMUtilsShareRules *
+nm_utils_share_rules_new(void)
+{
+ NMUtilsShareRules *self;
+
+ self = g_slice_new(NMUtilsShareRules);
+ *self = (NMUtilsShareRules){
+ .rules = g_array_sized_new(FALSE, FALSE, sizeof(ShareRule), 10),
+ };
+
+ g_array_set_clear_func(self->rules, _share_rule_clear);
+ return self;
+}
+
+void
+nm_utils_share_rules_free(NMUtilsShareRules *self)
+{
+ if (!self)
+ return;
+
+ g_array_unref(self->rules);
+ nm_g_slice_free(self);
+}
+
+void
+nm_utils_share_rules_add_rule_take(NMUtilsShareRules *self, const char *table, char *rule_take)
+{
+ ShareRule *rule;
+
+ g_return_if_fail(self);
+ g_return_if_fail(table);
+ g_return_if_fail(rule_take);
+
+ rule = nm_g_array_append_new(self->rules, ShareRule);
+ *rule = (ShareRule){
+ .table = g_strdup(table),
+ .rule = g_steal_pointer(&rule_take),
+ };
+}
+
+void
+nm_utils_share_rules_apply(NMUtilsShareRules *self, gboolean shared)
+{
+ guint i;
+
+ g_return_if_fail(self);
+
+ if (self->rules->len == 0)
+ return;
+
+ /* depending on whether we share or unshare, we add/remote the rules
+ * in opposite order. */
+ if (shared)
+ i = self->rules->len - 1;
+ else
+ i = 0;
+
+ for (;;) {
+ gs_free_error GError *error = NULL;
+ ShareRule * rule;
+ gs_free const char ** argv = NULL;
+ gs_free char * cmd = NULL;
+ int status;
+
+ rule = &g_array_index(self->rules, ShareRule, i);
+
+ cmd = g_strdup_printf("%s --table %s %s %s",
+ IPTABLES_PATH,
+ rule->table,
+ shared ? "--insert" : "--delete",
+ rule->rule);
+ argv = nm_utils_strsplit_set(cmd, " ");
+
+ nm_log_info(LOGD_SHARING, "Executing: %s", cmd);
+ if (!g_spawn_sync("/",
+ (char **) argv,
+ (char **) NM_PTRARRAY_EMPTY(const char *),
+ G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &status,
+ &error)) {
+ nm_log_warn(LOGD_SHARING, "Error executing command: %s", error->message);
+ goto next;
+ }
+ if (WEXITSTATUS(status)) {
+ nm_log_warn(LOGD_SHARING, "** Command returned exit status %d.", WEXITSTATUS(status));
+ }
+
+next:
+ if (shared) {
+ if (i == 0)
+ break;
+ i--;
+ } else {
+ i++;
+ if (i >= self->rules->len)
+ break;
+ }
+ }
+}
+
+void
+nm_utils_share_rules_add_all_rules(NMUtilsShareRules *self,
+ const char * ip_iface,
+ in_addr_t addr,
+ guint plen)
+{
+ in_addr_t netmask;
+ in_addr_t network;
+ char str_mask[NM_UTILS_INET_ADDRSTRLEN];
+ char str_addr[NM_UTILS_INET_ADDRSTRLEN];
+
+ nm_assert(self);
+
+ netmask = _nm_utils_ip4_prefix_to_netmask(plen);
+ _nm_utils_inet4_ntop(netmask, str_mask);
+
+ network = addr & netmask;
+ _nm_utils_inet4_ntop(network, str_addr);
+
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "nat",
+ "POSTROUTING --source %s/%s ! --destination %s/%s --jump MASQUERADE",
+ str_addr,
+ str_mask,
+ str_addr,
+ str_mask);
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "filter",
+ "FORWARD --destination %s/%s --out-interface %s --match state --state "
+ "ESTABLISHED,RELATED --jump ACCEPT",
+ str_addr,
+ str_mask,
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(self,
+ "filter",
+ "FORWARD --source %s/%s --in-interface %s --jump ACCEPT",
+ str_addr,
+ str_mask,
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(self,
+ "filter",
+ "FORWARD --in-interface %s --out-interface %s --jump ACCEPT",
+ ip_iface,
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(self,
+ "filter",
+ "FORWARD --out-interface %s --jump REJECT",
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(self,
+ "filter",
+ "FORWARD --in-interface %s --jump REJECT",
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "filter",
+ "INPUT --in-interface %s --protocol udp --destination-port 67 --jump ACCEPT",
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "filter",
+ "INPUT --in-interface %s --protocol tcp --destination-port 67 --jump ACCEPT",
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "filter",
+ "INPUT --in-interface %s --protocol udp --destination-port 53 --jump ACCEPT",
+ ip_iface);
+ nm_utils_share_rules_add_rule_v(
+ self,
+ "filter",
+ "INPUT --in-interface %s --protocol tcp --destination-port 53 --jump ACCEPT",
+ ip_iface);
+}
diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h
index e961c785a1..5373f9cea8 100644
--- a/src/NetworkManagerUtils.h
+++ b/src/NetworkManagerUtils.h
@@ -224,4 +224,31 @@ NM_AUTO_DEFINE_FCN(NMDhcpLease *, _nm_auto_unref_dhcplease, nm_dhcp_lease_unref)
/*****************************************************************************/
+typedef struct _NMUtilsShareRules NMUtilsShareRules;
+
+NMUtilsShareRules *nm_utils_share_rules_new(void);
+
+void nm_utils_share_rules_free(NMUtilsShareRules *self);
+
+void
+nm_utils_share_rules_add_rule_take(NMUtilsShareRules *self, const char *table, char *rule_take);
+
+static inline void
+nm_utils_share_rules_add_rule(NMUtilsShareRules *self, const char *table, const char *rule)
+{
+ nm_utils_share_rules_add_rule_take(self, table, g_strdup(rule));
+}
+
+#define nm_utils_share_rules_add_rule_v(self, table, ...) \
+ nm_utils_share_rules_add_rule_take((self), (table), g_strdup_printf(__VA_ARGS__))
+
+void nm_utils_share_rules_add_all_rules(NMUtilsShareRules *self,
+ const char * ip_iface,
+ in_addr_t addr,
+ guint plen);
+
+void nm_utils_share_rules_apply(NMUtilsShareRules *self, gboolean shared);
+
+/*****************************************************************************/
+
#endif /* __NETWORKMANAGER_UTILS_H__ */
diff --git a/src/devices/adsl/nm-atm-manager.c b/src/devices/adsl/nm-atm-manager.c
index 8e9f555db0..07ee6529a6 100644
--- a/src/devices/adsl/nm-atm-manager.c
+++ b/src/devices/adsl/nm-atm-manager.c
@@ -53,7 +53,7 @@ NM_DEVICE_FACTORY_DECLARE_TYPES(
G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
- return (NMDeviceFactory *) g_object_new(NM_TYPE_ATM_MANAGER, NULL);
+ return g_object_new(NM_TYPE_ATM_MANAGER, NULL);
}
/*****************************************************************************/
diff --git a/src/devices/adsl/nm-device-adsl.c b/src/devices/adsl/nm-device-adsl.c
index 3261562399..f94ee49af8 100644
--- a/src/devices/adsl/nm-device-adsl.c
+++ b/src/devices/adsl/nm-device-adsl.c
@@ -23,8 +23,8 @@
#include "nm-setting-adsl.h"
#include "nm-utils.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceAdsl
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceAdsl);
/*****************************************************************************/
@@ -645,20 +645,20 @@ nm_device_adsl_new(const char *udi, const char *iface, const char *driver, int a
g_return_val_if_fail(udi != NULL, NULL);
g_return_val_if_fail(atm_index >= 0, NULL);
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_ADSL,
- NM_DEVICE_UDI,
- udi,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_DRIVER,
- driver,
- NM_DEVICE_ADSL_ATM_INDEX,
- atm_index,
- NM_DEVICE_TYPE_DESC,
- "ADSL",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_ADSL,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_ADSL,
+ NM_DEVICE_UDI,
+ udi,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_DRIVER,
+ driver,
+ NM_DEVICE_ADSL_ATM_INDEX,
+ atm_index,
+ NM_DEVICE_TYPE_DESC,
+ "ADSL",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_ADSL,
+ NULL);
}
static void
diff --git a/src/devices/bluetooth/nm-bluez-manager.c b/src/devices/bluetooth/nm-bluez-manager.c
index df0bcbbb62..32c316d607 100644
--- a/src/devices/bluetooth/nm-bluez-manager.c
+++ b/src/devices/bluetooth/nm-bluez-manager.c
@@ -194,7 +194,7 @@ NM_DEVICE_FACTORY_DECLARE_TYPES(NM_DEVICE_FACTORY_DECLARE_LINK_TYPES(
G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
- return (NMDeviceFactory *) g_object_new(NM_TYPE_BLUEZ_MANAGER, NULL);
+ return g_object_new(NM_TYPE_BLUEZ_MANAGER, NULL);
}
/*****************************************************************************/
diff --git a/src/devices/bluetooth/nm-device-bt.c b/src/devices/bluetooth/nm-device-bt.c
index c31961df92..ca2a59731d 100644
--- a/src/devices/bluetooth/nm-device-bt.c
+++ b/src/devices/bluetooth/nm-device-bt.c
@@ -30,8 +30,8 @@
#include "devices/wwan/nm-modem-manager.h"
#include "devices/wwan/nm-modem.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceBt
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceBt);
/*****************************************************************************/
diff --git a/src/devices/nm-device-6lowpan.c b/src/devices/nm-device-6lowpan.c
index bf63fb7337..cf2be8620c 100644
--- a/src/devices/nm-device-6lowpan.c
+++ b/src/devices/nm-device-6lowpan.c
@@ -14,8 +14,8 @@
#include "nm-setting-6lowpan.h"
#include "nm-utils.h"
+#define _NMLOG_DEVICE_TYPE NMDevice6Lowpan
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDevice6Lowpan);
/*****************************************************************************/
@@ -285,16 +285,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_6LOWPAN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "6LoWPAN",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_6LOWPAN,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_6LOWPAN,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_6LOWPAN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "6LoWPAN",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_6LOWPAN,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_6LOWPAN,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c
index 3ef14a9e76..27fa720967 100644
--- a/src/devices/nm-device-bond.c
+++ b/src/devices/nm-device-bond.c
@@ -17,8 +17,8 @@
#include "nm-core-internal.h"
#include "nm-ip4-config.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceBond
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceBond);
/*****************************************************************************/
@@ -149,6 +149,7 @@ ignore_option(NMSettingBond *s_bond, const char *option, const char *value)
static void
update_connection(NMDevice *device, NMConnection *connection)
{
+ NMDeviceBond * self = NM_DEVICE_BOND(device);
NMSettingBond *s_bond = nm_connection_get_setting_bond(connection);
int ifindex = nm_device_get_ifindex(device);
NMBondMode mode = NM_BOND_MODE_UNKNOWN;
@@ -197,7 +198,10 @@ update_connection(NMDevice *device, NMConnection *connection)
}
}
- nm_setting_bond_add_option(s_bond, option, value);
+ if (!_nm_setting_bond_validate_option(option, value, NULL))
+ _LOGT(LOGD_BOND, "cannot set invalid bond option '%s' = '%s'", option, value);
+ else
+ nm_setting_bond_add_option(s_bond, option, value);
}
}
}
@@ -264,7 +268,7 @@ set_arp_targets(NMDevice *device, const char *cur_arp_ip_target, const char *new
if (cur_len == 0 && new_len == 0)
return;
- if (_nm_utils_strv_equal((char **) cur_strv, (char **) new_strv))
+ if (nm_utils_strv_equal(cur_strv, new_strv))
return;
for (i = 0; i < cur_len; i++)
@@ -616,18 +620,18 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_BOND,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_DRIVER,
- "bonding",
- NM_DEVICE_TYPE_DESC,
- "Bond",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_BOND,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_BOND,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_BOND,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_DRIVER,
+ "bonding",
+ NM_DEVICE_TYPE_DESC,
+ "Bond",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_BOND,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_BOND,
+ NULL);
}
NM_DEVICE_FACTORY_DEFINE_INTERNAL(
diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c
index 48dcec1b1d..64a530a26b 100644
--- a/src/devices/nm-device-bridge.c
+++ b/src/devices/nm-device-bridge.c
@@ -15,8 +15,8 @@
#include "nm-device-factory.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceBridge
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceBridge);
/*****************************************************************************/
@@ -169,7 +169,7 @@ static void
to_sysfs_group_address_sys(const char *group_address, NMEtherAddr *out_addr)
{
if (group_address == NULL) {
- *out_addr = (NMEtherAddr) NM_ETHER_ADDR_INIT(NM_BRIDGE_GROUP_ADDRESS_DEF_BIN);
+ *out_addr = NM_ETHER_ADDR_INIT(NM_BRIDGE_GROUP_ADDRESS_DEF_BIN);
return;
}
if (!nm_utils_hwaddr_aton(group_address, out_addr, ETH_ALEN))
@@ -1197,18 +1197,18 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_BRIDGE,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_DRIVER,
- "bridge",
- NM_DEVICE_TYPE_DESC,
- "Bridge",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_BRIDGE,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_BRIDGE,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_BRIDGE,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_DRIVER,
+ "bridge",
+ NM_DEVICE_TYPE_DESC,
+ "Bridge",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_BRIDGE,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_BRIDGE,
+ NULL);
}
static gboolean
diff --git a/src/devices/nm-device-dummy.c b/src/devices/nm-device-dummy.c
index 4f6b8cc234..1b34112b32 100644
--- a/src/devices/nm-device-dummy.c
+++ b/src/devices/nm-device-dummy.c
@@ -18,8 +18,8 @@
#include "nm-setting-dummy.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceDummy
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceDummy);
/*****************************************************************************/
@@ -162,16 +162,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_DUMMY,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Dummy",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_DUMMY,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_DUMMY,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_DUMMY,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Dummy",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_DUMMY,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_DUMMY,
+ NULL);
}
NM_DEVICE_FACTORY_DEFINE_INTERNAL(
diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c
index 2569c4262c..9f149c73db 100644
--- a/src/devices/nm-device-ethernet.c
+++ b/src/devices/nm-device-ethernet.c
@@ -34,9 +34,10 @@
#include "nm-core-internal.h"
#include "NetworkManagerUtils.h"
#include "nm-udev-aux/nm-udev-utils.h"
+#include "nm-device-veth.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceEthernet
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceEthernet);
/*****************************************************************************/
@@ -347,7 +348,9 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
->check_connection_compatible(device, connection, error))
return FALSE;
- if (nm_connection_is_type(connection, NM_SETTING_PPPOE_SETTING_NAME)) {
+ if (nm_connection_is_type(connection, NM_SETTING_PPPOE_SETTING_NAME)
+ || (nm_connection_is_type(connection, NM_SETTING_VETH_SETTING_NAME)
+ && NM_IS_DEVICE_VETH(device))) {
s_wired = nm_connection_get_setting_wired(connection);
} else {
s_wired =
@@ -1360,6 +1363,9 @@ wake_on_lan_enable(NMDevice *device)
s_wired = nm_device_get_applied_setting(device, NM_TYPE_SETTING_WIRED);
+ if (NM_IS_DEVICE_VETH(device))
+ return FALSE;
+
if (s_wired) {
wol = nm_setting_wired_get_wake_on_lan(s_wired);
password = nm_setting_wired_get_wake_on_lan_password(s_wired);
@@ -1493,6 +1499,12 @@ act_stage3_ip_config_start(NMDevice * device,
{
NMSettingConnection *s_con;
const char * connection_type;
+ int ifindex;
+
+ ifindex = nm_device_get_ifindex(device);
+
+ if (ifindex <= 0)
+ return NM_ACT_STAGE_RETURN_FAILURE;
if (addr_family == AF_INET) {
s_con = nm_device_get_applied_setting(device, NM_TYPE_SETTING_CONNECTION);
@@ -1803,7 +1815,7 @@ static void
link_changed(NMDevice *device, const NMPlatformLink *pllink)
{
NM_DEVICE_CLASS(nm_device_ethernet_parent_class)->link_changed(device, pllink);
- if (pllink->initialized)
+ if (!NM_IS_DEVICE_VETH(device) && pllink->initialized)
_update_s390_subchannels((NMDeviceEthernet *) device);
}
@@ -2021,16 +2033,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_ETHERNET,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Ethernet",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_ETHERNET,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_ETHERNET,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_ETHERNET,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Ethernet",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_ETHERNET,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_ETHERNET,
+ NULL);
}
static gboolean
diff --git a/src/devices/nm-device-factory.c b/src/devices/nm-device-factory.c
index a238ce1bcd..ba33404a2d 100644
--- a/src/devices/nm-device-factory.c
+++ b/src/devices/nm-device-factory.c
@@ -301,7 +301,7 @@ _load_internal_factory(GType factory_gtype,
{
gs_unref_object NMDeviceFactory *factory = NULL;
- factory = (NMDeviceFactory *) g_object_new(factory_gtype, NULL);
+ factory = g_object_new(factory_gtype, NULL);
_add_factory(factory, NULL, callback, user_data);
}
diff --git a/src/devices/nm-device-generic.c b/src/devices/nm-device-generic.c
index ccd56366ce..17e34d1254 100644
--- a/src/devices/nm-device-generic.c
+++ b/src/devices/nm-device-generic.c
@@ -165,16 +165,16 @@ nm_device_generic_new(const NMPlatformLink *plink, gboolean nm_plugin_missing)
{
g_return_val_if_fail(plink != NULL, NULL);
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_GENERIC,
- NM_DEVICE_IFACE,
- plink->name,
- NM_DEVICE_TYPE_DESC,
- "Generic",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_GENERIC,
- NM_DEVICE_NM_PLUGIN_MISSING,
- nm_plugin_missing,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_GENERIC,
+ NM_DEVICE_IFACE,
+ plink->name,
+ NM_DEVICE_TYPE_DESC,
+ "Generic",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_GENERIC,
+ NM_DEVICE_NM_PLUGIN_MISSING,
+ nm_plugin_missing,
+ NULL);
}
static void
diff --git a/src/devices/nm-device-infiniband.c b/src/devices/nm-device-infiniband.c
index bae5db6481..820b885bf0 100644
--- a/src/devices/nm-device-infiniband.c
+++ b/src/devices/nm-device-infiniband.c
@@ -443,19 +443,19 @@ create_device(NMDeviceFactory * factory,
&& nm_setting_infiniband_get_mac_address(s_infiniband));
}
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_INFINIBAND,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "InfiniBand",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_INFINIBAND,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_INFINIBAND,
- /* NOTE: Partition should probably be a different link type! */
- NM_DEVICE_INFINIBAND_IS_PARTITION,
- is_partition,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_INFINIBAND,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "InfiniBand",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_INFINIBAND,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_INFINIBAND,
+ /* NOTE: Partition should probably be a different link type! */
+ NM_DEVICE_INFINIBAND_IS_PARTITION,
+ is_partition,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-ip-tunnel.c b/src/devices/nm-device-ip-tunnel.c
index e01cc7ff74..dad64cd4aa 100644
--- a/src/devices/nm-device-ip-tunnel.c
+++ b/src/devices/nm-device-ip-tunnel.c
@@ -22,8 +22,8 @@
#include "nm-act-request.h"
#include "nm-ip4-config.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceIPTunnel
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceIPTunnel);
/*****************************************************************************/
@@ -1233,18 +1233,18 @@ create_device(NMDeviceFactory * factory,
if (mode == NM_IP_TUNNEL_MODE_UNKNOWN || link_type == NM_LINK_TYPE_UNKNOWN)
return NULL;
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_IP_TUNNEL,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "IPTunnel",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_IP_TUNNEL,
- NM_DEVICE_LINK_TYPE,
- link_type,
- NM_DEVICE_IP_TUNNEL_MODE,
- mode,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_IP_TUNNEL,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "IPTunnel",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_IP_TUNNEL,
+ NM_DEVICE_LINK_TYPE,
+ link_type,
+ NM_DEVICE_IP_TUNNEL_MODE,
+ mode,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-logging.h b/src/devices/nm-device-logging.h
index d12910207e..76d758e0f1 100644
--- a/src/devices/nm-device-logging.h
+++ b/src/devices/nm-device-logging.h
@@ -8,36 +8,45 @@
#include "nm-device.h"
-#define _LOG_DECLARE_SELF(t) \
- _nm_unused static inline NMDevice *_nm_device_log_self_to_device(t *self) \
- { \
- return (NMDevice *) self; \
- }
+#if !_NM_CC_SUPPORT_GENERIC
+ #define _NM_DEVICE_CAST(self) ((NMDevice *) (self))
+#elif !defined(_NMLOG_DEVICE_TYPE)
+ #define _NM_DEVICE_CAST(self) \
+ _Generic((self), NMDevice * \
+ : ((NMDevice *) (self)), NMDevice *const \
+ : ((NMDevice *) (self)))
+#else
+ #define _NM_DEVICE_CAST(self) \
+ _Generic((self), \
+ _NMLOG_DEVICE_TYPE * : ((NMDevice *) (self)), \
+ _NMLOG_DEVICE_TYPE * const: ((NMDevice *) (self)), \
+ NMDevice * : ((NMDevice *) (self)), \
+ NMDevice * const: ((NMDevice *) (self)))
+#endif
#undef _NMLOG_ENABLED
#define _NMLOG_ENABLED(level, domain) (nm_logging_enabled((level), (domain)))
-#define _NMLOG(level, domain, ...) \
- G_STMT_START \
- { \
- const NMLogLevel _level = (level); \
- const NMLogDomain _domain = (domain); \
- \
- if (nm_logging_enabled(_level, _domain)) { \
- typeof(*self) *const _self = (self); \
- const char *const _ifname = \
- _nm_device_get_iface(_nm_device_log_self_to_device(_self)); \
- \
- nm_log_obj(_level, \
- _domain, \
- _ifname, \
- NULL, \
- _self, \
- "device", \
- "%s%s%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
- NM_PRINT_FMT_QUOTED(_ifname, "(", _ifname, ")", "[null]") \
- _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
- } \
- } \
+#define _NMLOG(level, domain, ...) \
+ G_STMT_START \
+ { \
+ const NMLogLevel _level = (level); \
+ const NMLogDomain _domain = (domain); \
+ \
+ if (nm_logging_enabled(_level, _domain)) { \
+ typeof(*self) *const _self = (self); \
+ const char *const _ifname = _nm_device_get_iface(_NM_DEVICE_CAST(_self)); \
+ \
+ nm_log_obj(_level, \
+ _domain, \
+ _ifname, \
+ NULL, \
+ _self, \
+ "device", \
+ "%s%s%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+ NM_PRINT_FMT_QUOTED(_ifname, "(", _ifname, ")", "[null]") \
+ _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
+ } \
+ } \
G_STMT_END
#endif /* __NETWORKMANAGER_DEVICE_LOGGING_H__ */
diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c
index 7d738b4243..2be87b3459 100644
--- a/src/devices/nm-device-macsec.c
+++ b/src/devices/nm-device-macsec.c
@@ -18,8 +18,8 @@
#include "supplicant/nm-supplicant-interface.h"
#include "supplicant/nm-supplicant-config.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceMacsec
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceMacsec);
/*****************************************************************************/
@@ -1023,16 +1023,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_MACSEC,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Macsec",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_MACSEC,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_MACSEC,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_MACSEC,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Macsec",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_MACSEC,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_MACSEC,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-macvlan.c b/src/devices/nm-device-macvlan.c
index d9e71c8ca8..5017e81ed2 100644
--- a/src/devices/nm-device-macvlan.c
+++ b/src/devices/nm-device-macvlan.c
@@ -21,8 +21,8 @@
#include "nm-ip4-config.h"
#include "nm-utils.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceMacvlan
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceMacvlan);
/*****************************************************************************/
@@ -598,18 +598,18 @@ create_device(NMDeviceFactory * factory,
link_type = tap ? NM_LINK_TYPE_MACVTAP : NM_LINK_TYPE_MACVLAN;
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_MACVLAN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Macvlan",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_MACVLAN,
- NM_DEVICE_LINK_TYPE,
- link_type,
- NM_DEVICE_MACVLAN_TAP,
- tap,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_MACVLAN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Macvlan",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_MACVLAN,
+ NM_DEVICE_LINK_TYPE,
+ link_type,
+ NM_DEVICE_MACVLAN_TAP,
+ tap,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-ppp.c b/src/devices/nm-device-ppp.c
index 82861bdafc..0d1218f77a 100644
--- a/src/devices/nm-device-ppp.c
+++ b/src/devices/nm-device-ppp.c
@@ -18,8 +18,8 @@
#include "ppp/nm-ppp-manager-call.h"
#include "ppp/nm-ppp-status.h"
+#define _NMLOG_DEVICE_TYPE NMDevicePpp
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDevicePpp);
/*****************************************************************************/
@@ -316,16 +316,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_PPP,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Ppp",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_PPP,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_PPP,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_PPP,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Ppp",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_PPP,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_PPP,
+ NULL);
}
static gboolean
diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h
index 5f8eff183b..dbf5105a08 100644
--- a/src/devices/nm-device-private.h
+++ b/src/devices/nm-device-private.h
@@ -54,9 +54,7 @@ gboolean nm_device_set_ip_iface(NMDevice *self, const char *iface);
void nm_device_activate_schedule_stage3_ip_config_start(NMDevice *device);
-gboolean nm_device_activate_stage3_ip4_start(NMDevice *self);
-
-gboolean nm_device_activate_stage3_ip6_start(NMDevice *self);
+gboolean nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family);
gboolean nm_device_bring_up(NMDevice *self, gboolean wait, gboolean *no_firmware);
diff --git a/src/devices/nm-device-tun.c b/src/devices/nm-device-tun.c
index 9480525502..5125a67685 100644
--- a/src/devices/nm-device-tun.c
+++ b/src/devices/nm-device-tun.c
@@ -19,8 +19,8 @@
#include "nm-setting-tun.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceTun
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceTun);
/*****************************************************************************/
@@ -550,16 +550,16 @@ create_device(NMDeviceFactory * factory,
NM_SETTING_TUN_SETTING_NAME),
NULL);
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_TUN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Tun",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_TUN,
- NM_DEVICE_LINK_TYPE,
- (guint) NM_LINK_TYPE_TUN,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_TUN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Tun",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_TUN,
+ NM_DEVICE_LINK_TYPE,
+ (guint) NM_LINK_TYPE_TUN,
+ NULL);
}
NM_DEVICE_FACTORY_DEFINE_INTERNAL(
diff --git a/src/devices/nm-device-veth.c b/src/devices/nm-device-veth.c
index f61bc99f2a..54400c3c49 100644
--- a/src/devices/nm-device-veth.c
+++ b/src/devices/nm-device-veth.c
@@ -7,14 +7,16 @@
#include <stdlib.h>
+#include "nm-core-internal.h"
#include "nm-device-veth.h"
#include "nm-device-private.h"
#include "nm-manager.h"
#include "platform/nm-platform.h"
#include "nm-device-factory.h"
+#include "nm-setting-veth.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceVeth
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceVeth);
/*****************************************************************************/
@@ -42,9 +44,10 @@ update_properties(NMDevice *device)
ifindex = nm_device_get_ifindex(device);
- if (!nm_platform_link_veth_get_properties(nm_device_get_platform(device),
- ifindex,
- &peer_ifindex))
+ if (ifindex <= 0
+ || !nm_platform_link_veth_get_properties(nm_device_get_platform(device),
+ ifindex,
+ &peer_ifindex))
peer_ifindex = 0;
nm_device_parent_set_ifindex(device, peer_ifindex);
@@ -71,6 +74,81 @@ link_changed(NMDevice *device, const NMPlatformLink *pllink)
update_properties(device);
}
+static gboolean
+create_and_realize(NMDevice * device,
+ NMConnection * connection,
+ NMDevice * parent,
+ const NMPlatformLink **out_plink,
+ GError ** error)
+{
+ const char * iface = nm_device_get_iface(device);
+ NMSettingVeth *s_veth;
+ int r;
+
+ s_veth = _nm_connection_get_setting(connection, NM_TYPE_SETTING_VETH);
+ if (!s_veth) {
+ g_set_error(error,
+ NM_DEVICE_ERROR,
+ NM_DEVICE_ERROR_CREATION_FAILED,
+ "Profile %s (%s) is not a suitable veth profile",
+ nm_connection_get_id(connection),
+ nm_connection_get_uuid(connection));
+ return FALSE;
+ }
+
+ r = nm_platform_link_veth_add(nm_device_get_platform(device),
+ iface,
+ nm_setting_veth_get_peer(s_veth),
+ out_plink);
+ if (r < 0) {
+ g_set_error(error,
+ NM_DEVICE_ERROR,
+ NM_DEVICE_ERROR_CREATION_FAILED,
+ "Failed to create veth interface '%s' for '%s': %s",
+ iface,
+ nm_connection_get_id(connection),
+ nm_strerror(r));
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*****************************************************************************/
+
+static NMDeviceCapabilities
+get_generic_capabilities(NMDevice *device)
+{
+ return NM_DEVICE_CAP_CARRIER_DETECT | NM_DEVICE_CAP_IS_SOFTWARE;
+}
+
+static gboolean
+complete_connection(NMDevice * device,
+ NMConnection * connection,
+ const char * specific_object,
+ NMConnection *const *existing_connections,
+ GError ** error)
+{
+ NMSettingVeth *s_veth;
+
+ nm_utils_complete_generic(nm_device_get_platform(device),
+ connection,
+ NM_SETTING_VETH_SETTING_NAME,
+ existing_connections,
+ NULL,
+ _("Veth connection"),
+ "veth",
+ NULL,
+ TRUE);
+
+ s_veth = _nm_connection_get_setting(connection, NM_TYPE_SETTING_VETH);
+ if (!s_veth) {
+ s_veth = (NMSettingVeth *) nm_setting_veth_new();
+ nm_connection_add_setting(connection, NM_SETTING(s_veth));
+ }
+
+ return TRUE;
+}
+
/*****************************************************************************/
static void
@@ -136,6 +214,9 @@ nm_device_veth_class_init(NMDeviceVethClass *klass)
device_class->can_unmanaged_external_down = can_unmanaged_external_down;
device_class->link_changed = link_changed;
device_class->parent_changed_notify = parent_changed_notify;
+ device_class->create_and_realize = create_and_realize;
+ device_class->complete_connection = complete_connection;
+ device_class->get_generic_capabilities = get_generic_capabilities;
obj_properties[PROP_PEER] = g_param_spec_string(NM_DEVICE_VETH_PEER,
"",
@@ -159,20 +240,22 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_VETH,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Veth",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_VETH,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_VETH,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_VETH,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Veth",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_VETH,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_VETH,
+ NULL);
}
-NM_DEVICE_FACTORY_DEFINE_INTERNAL(VETH,
- Veth,
- veth,
- NM_DEVICE_FACTORY_DECLARE_LINK_TYPES(NM_LINK_TYPE_VETH),
- factory_class->create_device = create_device;);
+NM_DEVICE_FACTORY_DEFINE_INTERNAL(
+ VETH,
+ Veth,
+ veth,
+ NM_DEVICE_FACTORY_DECLARE_LINK_TYPES(NM_LINK_TYPE_VETH)
+ NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES(NM_SETTING_VETH_SETTING_NAME),
+ factory_class->create_device = create_device;);
diff --git a/src/devices/nm-device-vlan.c b/src/devices/nm-device-vlan.c
index bb6fdc05de..d3b9d54930 100644
--- a/src/devices/nm-device-vlan.c
+++ b/src/devices/nm-device-vlan.c
@@ -22,8 +22,8 @@
#include "nm-core-internal.h"
#include "platform/nmp-object.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceVlan
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceVlan);
/*****************************************************************************/
@@ -117,7 +117,7 @@ parent_hwaddr_maybe_changed(NMDevice *parent, GParamSpec *pspec, gpointer user_d
*/
s_ip6 = nm_connection_get_setting_ip6_config(connection);
if (s_ip6)
- nm_device_reactivate_ip6_config(device, s_ip6, s_ip6);
+ nm_device_reactivate_ip_config(device, AF_INET6, s_ip6, s_ip6);
}
}
@@ -614,18 +614,18 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_VLAN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_DRIVER,
- "8021q",
- NM_DEVICE_TYPE_DESC,
- "VLAN",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_VLAN,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_VLAN,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_VLAN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_DRIVER,
+ "8021q",
+ NM_DEVICE_TYPE_DESC,
+ "VLAN",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_VLAN,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_VLAN,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-vrf.c b/src/devices/nm-device-vrf.c
index ae0ecc60aa..9c3927e146 100644
--- a/src/devices/nm-device-vrf.c
+++ b/src/devices/nm-device-vrf.c
@@ -12,8 +12,8 @@
#include "platform/nm-platform.h"
#include "settings/nm-settings.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceVrf
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceVrf);
/*****************************************************************************/
diff --git a/src/devices/nm-device-vxlan.c b/src/devices/nm-device-vxlan.c
index 083f29c626..cc42ffe4f9 100644
--- a/src/devices/nm-device-vxlan.c
+++ b/src/devices/nm-device-vxlan.c
@@ -19,8 +19,8 @@
#include "nm-ip4-config.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceVxlan
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceVxlan);
/*****************************************************************************/
@@ -162,11 +162,10 @@ create_and_realize(NMDevice * device,
NMPlatformLnkVxlan props = {};
NMSettingVxlan * s_vxlan;
const char * str;
- int ret;
int r;
s_vxlan = nm_connection_get_setting_vxlan(connection);
- g_assert(s_vxlan);
+ g_return_val_if_fail(s_vxlan, FALSE);
if (parent)
props.parent_ifindex = nm_device_get_ifindex(parent);
@@ -175,19 +174,17 @@ create_and_realize(NMDevice * device,
str = nm_setting_vxlan_get_local(s_vxlan);
if (str) {
- ret = inet_pton(AF_INET, str, &props.local);
- if (ret != 1)
- ret = inet_pton(AF_INET6, str, &props.local6);
- if (ret != 1)
+ if (!nm_utils_parse_inaddr_bin(AF_INET, str, NULL, &props.local)
+ && !nm_utils_parse_inaddr_bin(AF_INET6, str, NULL, &props.local6))
return FALSE;
}
str = nm_setting_vxlan_get_remote(s_vxlan);
- ret = inet_pton(AF_INET, str, &props.group);
- if (ret != 1)
- ret = inet_pton(AF_INET6, str, &props.group6);
- if (ret != 1)
- return FALSE;
+ if (str) {
+ if (!nm_utils_parse_inaddr_bin(AF_INET, str, NULL, &props.group)
+ && !nm_utils_parse_inaddr_bin(AF_INET6, str, NULL, &props.group6))
+ return FALSE;
+ }
props.tos = nm_setting_vxlan_get_tos(s_vxlan);
props.ttl = nm_setting_vxlan_get_ttl(s_vxlan);
@@ -218,21 +215,26 @@ create_and_realize(NMDevice * device,
}
static gboolean
-address_matches(const char *str, in_addr_t addr4, struct in6_addr *addr6)
+address_matches(const char *candidate, in_addr_t addr4, struct in6_addr *addr6)
{
- in_addr_t new_addr4 = 0;
- struct in6_addr new_addr6 = {};
+ NMIPAddr candidate_addr;
+ int addr_family;
- if (!str) {
- return addr4 == 0 && !memcmp(addr6, &in6addr_any, sizeof(in6addr_any));
- }
+ if (!candidate)
+ return addr4 == 0u && IN6_IS_ADDR_UNSPECIFIED(addr6);
- if (inet_pton(AF_INET, str, &new_addr4) == 1)
- return new_addr4 == addr4;
- else if (inet_pton(AF_INET6, str, &new_addr6) == 1)
- return !memcmp(&new_addr6, addr6, sizeof(new_addr6));
- else
+ if (!nm_utils_parse_inaddr_bin(AF_UNSPEC, candidate, &addr_family, &candidate_addr))
+ return FALSE;
+
+ if (!nm_ip_addr_equal(addr_family,
+ &candidate_addr,
+ NM_IS_IPv4(addr_family) ? (gpointer) &addr4 : addr6))
return FALSE;
+
+ if (NM_IS_IPv4(addr_family))
+ return IN6_IS_ADDR_UNSPECIFIED(addr6);
+ else
+ return addr4 == 0u;
}
static gboolean
@@ -757,16 +759,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_VXLAN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "Vxlan",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_VXLAN,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_VXLAN,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_VXLAN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "Vxlan",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_VXLAN,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_VXLAN,
+ NULL);
}
static const char *
diff --git a/src/devices/nm-device-wireguard.c b/src/devices/nm-device-wireguard.c
index 9bd23e6564..8327412eb8 100644
--- a/src/devices/nm-device-wireguard.c
+++ b/src/devices/nm-device-wireguard.c
@@ -22,8 +22,8 @@
#include "nm-act-request.h"
#include "dns/nm-dns-manager.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceWireGuard
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceWireGuard);
/*****************************************************************************/
@@ -2005,16 +2005,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_WIREGUARD,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "WireGuard",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_WIREGUARD,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_WIREGUARD,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_WIREGUARD,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "WireGuard",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_WIREGUARD,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_WIREGUARD,
+ NULL);
}
NM_DEVICE_FACTORY_DEFINE_INTERNAL(
diff --git a/src/devices/nm-device-wpan.c b/src/devices/nm-device-wpan.c
index 195603dcde..f5c7e79fe9 100644
--- a/src/devices/nm-device-wpan.c
+++ b/src/devices/nm-device-wpan.c
@@ -20,8 +20,8 @@
#include "nm-setting-wpan.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceWpan
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceWpan);
/*****************************************************************************/
@@ -236,16 +236,16 @@ create_device(NMDeviceFactory * factory,
NMConnection * connection,
gboolean * out_ignore)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_WPAN,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "WPAN",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_WPAN,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_WPAN,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_WPAN,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "WPAN",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_WPAN,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_WPAN,
+ NULL);
}
NM_DEVICE_FACTORY_DEFINE_INTERNAL(
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 0be05f23d7..ec01d3af6b 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -52,6 +52,7 @@
#include "settings/nm-settings-connection.h"
#include "settings/nm-settings.h"
#include "nm-setting-ethtool.h"
+#include "nm-setting-ovs-external-ids.h"
#include "nm-setting-user.h"
#include "nm-auth-utils.h"
#include "nm-keep-alive.h"
@@ -74,7 +75,6 @@
#include "nm-device-wireguard.h"
#include "nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDevice);
/*****************************************************************************/
@@ -207,6 +207,23 @@ typedef struct {
NMEthtoolRingState * ring;
} EthtoolState;
+typedef enum {
+ RESOLVER_WAIT_ADDRESS = 0,
+ RESOLVER_IN_PROGRESS,
+ RESOLVER_DONE,
+} ResolverState;
+
+typedef struct {
+ ResolverState state;
+ GResolver * resolver;
+ GInetAddress *address;
+ GCancellable *cancellable;
+ char * hostname;
+ NMDevice * device;
+ guint timeout_id; /* Used when waiting for the address */
+ int addr_family;
+} HostnameResolver;
+
/*****************************************************************************/
enum {
@@ -219,6 +236,7 @@ enum {
REMOVED,
RECHECK_AUTO_ACTIVATE,
RECHECK_ASSUME,
+ DNS_LOOKUP_DONE,
LAST_SIGNAL,
};
static guint signals[LAST_SIGNAL] = {0};
@@ -326,6 +344,14 @@ typedef struct _NMDevicePrivate {
int auth_retries;
union {
+ struct {
+ HostnameResolver *hostname_resolver_6;
+ HostnameResolver *hostname_resolver_4;
+ };
+ HostnameResolver *hostname_resolver_x[2];
+ };
+
+ union {
const guint8 hw_addr_len; /* read-only */
guint8 hw_addr_len_;
};
@@ -357,6 +383,8 @@ typedef struct _NMDevicePrivate {
bool assume_state_guess_assume : 1;
char *assume_state_connection_uuid;
+ guint64 udi_id;
+
GHashTable *available_connections;
char * hw_addr;
char * hw_addr_perm;
@@ -695,6 +723,8 @@ static guint32 default_route_metric_penalty_get(NMDevice *self, int addr_family)
static guint _prop_get_ipv4_dad_timeout(NMDevice *self);
+static NMIP6Config *dad6_get_pending_addresses(NMDevice *self);
+
static void _carrier_wait_check_queued_act_request(NMDevice *self);
static gint64 _get_carrier_wait_ms(NMDevice *self);
@@ -726,24 +756,8 @@ static void concheck_update_state(NMDevice * self,
NMConnectivityState state,
gboolean is_periodic);
-static void activate_stage4_ip_config_timeout_4(NMDevice *self);
-static void activate_stage4_ip_config_timeout_6(NMDevice *self);
-
-static void (*const activate_stage4_ip_config_timeout_x[2])(NMDevice *self) = {
- activate_stage4_ip_config_timeout_6,
- activate_stage4_ip_config_timeout_4,
-};
-
static void sriov_op_cb(GError *error, gpointer user_data);
-static void activate_stage5_ip_config_result_4(NMDevice *self);
-static void activate_stage5_ip_config_result_6(NMDevice *self);
-
-static void (*const activate_stage5_ip_config_result_x[2])(NMDevice *self) = {
- activate_stage5_ip_config_result_6,
- activate_stage5_ip_config_result_4,
-};
-
/*****************************************************************************/
static NM_UTILS_LOOKUP_STR_DEFINE(
@@ -879,6 +893,22 @@ static NM_UTILS_LOOKUP_STR_DEFINE(mtu_source_to_str,
/*****************************************************************************/
+static void
+_hostname_resolver_free(HostnameResolver *resolver)
+{
+ if (!resolver)
+ return;
+
+ nm_clear_g_source(&resolver->timeout_id);
+ nm_clear_g_cancellable(&resolver->cancellable);
+ nm_g_object_unref(resolver->resolver);
+ nm_g_object_unref(resolver->address);
+ g_free(resolver->hostname);
+ nm_g_slice_free(resolver);
+}
+
+/*****************************************************************************/
+
static NMSettingIP6ConfigPrivacy
_ip6_privacy_clamp(NMSettingIP6ConfigPrivacy use_tempaddr)
{
@@ -1294,7 +1324,7 @@ _prop_get_ipvx_route_table(NMDevice *self, int addr_family)
/* the route table setting affects how we sync routes. We shall
* not change it while the device is active, hence, cache it. */
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
if (priv->v4_route_table_initialized)
return priv->v4_route_table;
} else {
@@ -1312,7 +1342,7 @@ _prop_get_ipvx_route_table(NMDevice *self, int addr_family)
gint64 v;
v = nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
- addr_family == AF_INET
+ NM_IS_IPv4(addr_family)
? NM_CON_DEFAULT("ipv4.route-table")
: NM_CON_DEFAULT("ipv6.route-table"),
self,
@@ -1348,7 +1378,7 @@ _prop_get_ipvx_route_table(NMDevice *self, int addr_family)
if (klass->coerce_route_table)
route_table = klass->coerce_route_table(self, addr_family, route_table, is_user_config);
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
priv->v4_route_table_initialized = TRUE;
priv->v4_route_table = route_table;
} else {
@@ -1358,7 +1388,7 @@ _prop_get_ipvx_route_table(NMDevice *self, int addr_family)
_LOGT(LOGD_DEVICE,
"ipv%c.route-table = %u%s",
- addr_family == AF_INET ? '4' : '6',
+ nm_utils_addr_family_to_char(addr_family),
(guint)(route_table ?: RT_TABLE_MAIN),
route_table != 0u ? "" : " (policy routing not enabled)");
@@ -1437,7 +1467,7 @@ _prop_get_ipvx_dhcp_timeout(NMDevice *self, int addr_family)
goto out;
timeout = nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
- addr_family == AF_INET
+ NM_IS_IPv4(addr_family)
? NM_CON_DEFAULT("ipv4.dhcp-timeout")
: NM_CON_DEFAULT("ipv6.dhcp-timeout"),
self,
@@ -1480,6 +1510,7 @@ _prop_get_ipvx_dhcp_iaid(NMDevice * self,
NMConnection *connection,
gboolean * out_is_explicit)
{
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMSettingIPConfig *s_ip;
const char * iaid_str;
gs_free char * iaid_str_free = NULL;
@@ -1493,8 +1524,7 @@ _prop_get_ipvx_dhcp_iaid(NMDevice * self,
if (!iaid_str) {
iaid_str_free = nm_config_data_get_connection_default(
NM_CONFIG_GET_DATA,
- addr_family == AF_INET ? NM_CON_DEFAULT("ipv4.dhcp-iaid")
- : NM_CON_DEFAULT("ipv6.dhcp-iaid"),
+ IS_IPv4 ? NM_CON_DEFAULT("ipv4.dhcp-iaid") : NM_CON_DEFAULT("ipv6.dhcp-iaid"),
self);
iaid_str = iaid_str_free;
if (!iaid_str) {
@@ -1578,8 +1608,7 @@ _prop_get_ipvx_dhcp_iaid(NMDevice * self,
out_fail:
nm_assert(fail_reason);
- _LOGW(addr_family == AF_INET ? (LOGD_DEVICE | LOGD_DHCP4 | LOGD_IP4)
- : (LOGD_DEVICE | LOGD_DHCP6 | LOGD_IP6),
+ _LOGW(LOGD_DEVICE | LOGD_DHCPX(IS_IPv4) | LOGD_IPX(IS_IPv4),
"ipv%c.dhcp-iaid: failure to generate IAID: %s. Using interface-name based IAID",
nm_utils_addr_family_to_char(addr_family),
fail_reason);
@@ -1587,8 +1616,7 @@ out_fail:
iface = nm_device_get_ip_iface(self);
iaid = nm_utils_create_dhcp_iaid(TRUE, (const guint8 *) iface, strlen(iface));
out_good:
- _LOGD(addr_family == AF_INET ? (LOGD_DEVICE | LOGD_DHCP4 | LOGD_IP4)
- : (LOGD_DEVICE | LOGD_DHCP6 | LOGD_IP6),
+ _LOGD(LOGD_DEVICE | LOGD_DHCPX(IS_IPv4) | LOGD_IPX(IS_IPv4),
"ipv%c.dhcp-iaid: using %u (0x%08x) IAID (str: '%s', explicit %d)",
nm_utils_addr_family_to_char(addr_family),
iaid,
@@ -1622,8 +1650,8 @@ _prop_get_ipvx_dhcp_hostname_flags(NMDevice *self, int addr_family)
flags = nm_config_data_get_connection_default_int64(
NM_CONFIG_GET_DATA,
- addr_family == AF_INET ? NM_CON_DEFAULT("ipv4.dhcp-hostname-flags")
- : NM_CON_DEFAULT("ipv6.dhcp-hostname-flags"),
+ NM_IS_IPv4(addr_family) ? NM_CON_DEFAULT("ipv4.dhcp-hostname-flags")
+ : NM_CON_DEFAULT("ipv6.dhcp-hostname-flags"),
self,
0,
NM_DHCP_HOSTNAME_FLAG_FQDN_CLEAR_FLAGS,
@@ -1631,9 +1659,9 @@ _prop_get_ipvx_dhcp_hostname_flags(NMDevice *self, int addr_family)
if (!_nm_utils_validate_dhcp_hostname_flags(flags, addr_family, &error)) {
_LOGW(LOGD_DEVICE,
- "invalid global default value 0x%x for ipv%d.%s: %s",
+ "invalid global default value 0x%x for ipv%c.%s: %s",
(guint) flags,
- addr_family == AF_INET ? 4 : 6,
+ nm_utils_addr_family_to_char(addr_family),
NM_SETTING_IP_CONFIG_DHCP_HOSTNAME_FLAGS,
error->message);
flags = NM_DHCP_HOSTNAME_FLAG_NONE;
@@ -1642,7 +1670,7 @@ _prop_get_ipvx_dhcp_hostname_flags(NMDevice *self, int addr_family)
if (flags != NM_DHCP_HOSTNAME_FLAG_NONE)
return flags;
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
return NM_DHCP_HOSTNAME_FLAGS_FQDN_DEFAULT_IP4;
else
return NM_DHCP_HOSTNAME_FLAGS_FQDN_DEFAULT_IP6;
@@ -2338,8 +2366,8 @@ nm_device_ip_config_new(NMDevice *self, int addr_family)
{
nm_assert_addr_family(addr_family);
- return addr_family == AF_INET ? (gpointer) nm_device_ip4_config_new(self)
- : (gpointer) nm_device_ip6_config_new(self);
+ return NM_IS_IPv4(addr_family) ? (gpointer) nm_device_ip4_config_new(self)
+ : (gpointer) nm_device_ip6_config_new(self);
}
NML3ConfigData *
@@ -2754,7 +2782,7 @@ static void
_set_ip_state(NMDevice *self, int addr_family, NMDeviceIPState new_state)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
nm_assert_addr_family(addr_family);
@@ -2775,7 +2803,7 @@ _set_ip_state(NMDevice *self, int addr_family, NMDeviceIPState new_state)
*
* This is not documented/guaranteed behavior, but seems to make sense for now. */
_active_connection_set_state_flags(self,
- addr_family == AF_INET
+ NM_IS_IPv4(addr_family)
? NM_ACTIVATION_STATE_FLAG_IP4_READY
: NM_ACTIVATION_STATE_FLAG_IP6_READY);
}
@@ -3559,7 +3587,7 @@ static gboolean
default_route_metric_penalty_detect(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
/* currently we don't differentiate between IPv4 and IPv6 when detecting
* connectivity. */
@@ -3575,10 +3603,8 @@ default_route_metric_penalty_get(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- nm_assert_addr_family(addr_family);
-
- if (addr_family == AF_INET ? priv->default_route_metric_penalty_ip4_has
- : priv->default_route_metric_penalty_ip6_has)
+ if (NM_IS_IPv4(addr_family) ? priv->default_route_metric_penalty_ip4_has
+ : priv->default_route_metric_penalty_ip6_has)
return 20000;
return 0;
}
@@ -3612,8 +3638,8 @@ nm_device_get_route_metric(NMDevice *self, int addr_family)
/* use the current NMConfigData, which makes this configuration reloadable.
* Note that that means that the route-metric might change between SIGHUP.
* You must cache the returned value if that is a problem. */
- property = addr_family == AF_INET ? NM_CON_DEFAULT("ipv4.route-metric")
- : NM_CON_DEFAULT("ipv6.route-metric");
+ property = NM_IS_IPv4(addr_family) ? NM_CON_DEFAULT("ipv4.route-metric")
+ : NM_CON_DEFAULT("ipv6.route-metric");
route_metric = nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
property,
self,
@@ -3644,7 +3670,8 @@ nm_device_get_route_table(NMDevice *self, int addr_family)
static NMIPRouteTableSyncMode
_get_route_table_sync_mode_stateful(NMDevice *self, int addr_family)
{
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
NMDedupMultiIter ipconf_iter;
gboolean all_sync_now;
gboolean all_sync_eff;
@@ -3652,25 +3679,14 @@ _get_route_table_sync_mode_stateful(NMDevice *self, int addr_family)
all_sync_now = _prop_get_ipvx_route_table(self, addr_family) != 0u;
if (!all_sync_now) {
+ const NMPlatformIPRoute *route;
+
/* If there's a local route switch to all-sync in order
* to properly manage the local table */
- if (addr_family == AF_INET) {
- const NMPlatformIP4Route *route;
-
- nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, priv->con_ip_config_4, &route) {
- if (nm_platform_route_type_uncoerce(route->type_coerced) == RTN_LOCAL) {
- all_sync_now = TRUE;
- break;
- }
- }
- } else {
- const NMPlatformIP6Route *route;
-
- nm_ip_config_iter_ip6_route_for_each (&ipconf_iter, priv->con_ip_config_6, &route) {
- if (nm_platform_route_type_uncoerce(route->type_coerced) == RTN_LOCAL) {
- all_sync_now = TRUE;
- break;
- }
+ nm_ip_config_iter_ip_route_for_each (&ipconf_iter, priv->con_ip_config_x[IS_IPv4], &route) {
+ if (nm_platform_route_type_uncoerce(route->type_coerced) == RTN_LOCAL) {
+ all_sync_now = TRUE;
+ break;
}
}
}
@@ -3685,13 +3701,13 @@ _get_route_table_sync_mode_stateful(NMDevice *self, int addr_family)
* The purpose of this is to support reapply of route-table (and thus the
* all-sync mode). If reapply toggles from all-sync to no-all-sync, we must
* sync one last time. */
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
all_sync_eff = priv->v4_route_table_all_sync_before;
else
all_sync_eff = priv->v6_route_table_all_sync_before;
}
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
priv->v4_route_table_all_sync_before = all_sync_now;
else
priv->v6_route_table_all_sync_before = all_sync_now;
@@ -3943,7 +3959,7 @@ concheck_periodic_schedule_do(NMDevice *self, int addr_family, gint64 now_ns)
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
gboolean periodic_check_disabled = FALSE;
gint64 expiry, tdiff;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
/* we always cancel whatever was pending. */
if (nm_clear_g_source(&priv->concheck_x[IS_IPv4].p_cur_id))
@@ -3998,7 +4014,7 @@ concheck_periodic_schedule_set(NMDevice *self, int addr_family, ConcheckSchedule
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
gint64 new_expiry, exp_expiry, cur_expiry, tdiff;
gint64 now_ns = 0;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
if (priv->concheck_x[IS_IPv4].p_max_interval == 0) {
/* periodic check is disabled. Nothing to do. */
@@ -4158,7 +4174,7 @@ concheck_update_interval(NMDevice *self, int addr_family, gboolean check_now)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
guint new_interval;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
new_interval = nm_connectivity_get_interval(concheck_get_mgr(self));
@@ -4202,7 +4218,7 @@ concheck_update_state(NMDevice * self,
gboolean allow_periodic_bump)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
/* @state is a result of the connectivity check. We only expect a precise
* number of possible values. */
@@ -4283,14 +4299,14 @@ nm_device_get_effective_ip_config_method(NMDevice *self, int addr_family)
NMDeviceClass *klass;
NMConnection * connection = nm_device_get_applied_connection(self);
const char * method;
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_val_if_fail(NM_IS_CONNECTION(connection), "" /* bogus */);
- nm_assert_addr_family(addr_family);
method = nm_utils_get_ip_config_method(connection, addr_family);
- if ((addr_family == AF_INET && nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_AUTO))
- || (addr_family == AF_INET6 && nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_AUTO))) {
+ if ((IS_IPv4 && nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_AUTO))
+ || (!IS_IPv4 && nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_AUTO))) {
klass = NM_DEVICE_GET_CLASS(self);
if (klass->get_auto_ip_config_method) {
const char *auto_method;
@@ -4307,7 +4323,7 @@ nm_device_get_effective_ip_config_method(NMDevice *self, int addr_family)
static void
concheck_handle_complete(NMDeviceConnectivityHandle *handle, GError *error)
{
- const gboolean IS_IPv4 = (handle->addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(handle->addr_family);
/* The moment we invoke the callback, we unlink it. It signals
* that @handle is handled -- as far as the callee of callback
@@ -4495,7 +4511,7 @@ concheck_start(NMDevice * self,
(long long unsigned) handle->seq,
is_periodic ? ", periodic-check" : "");
- if (addr_family == AF_INET && !priv->concheck_rp_filter_checked) {
+ if (NM_IS_IPv4(addr_family) && !priv->concheck_rp_filter_checked) {
if ((ifname = nm_device_get_ip_iface_from_platform(self))) {
gboolean due_to_all;
int val;
@@ -4560,17 +4576,15 @@ NMConnectivityState
nm_device_get_connectivity_state(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
g_return_val_if_fail(NM_IS_DEVICE(self), NM_CONNECTIVITY_UNKNOWN);
- nm_assert_addr_family(addr_family);
priv = NM_DEVICE_GET_PRIVATE(self);
switch (addr_family) {
case AF_INET:
case AF_INET6:
- return priv->concheck_x[IS_IPv4].state;
+ return priv->concheck_x[NM_IS_IPv4(addr_family)].state;
default:
nm_assert(addr_family == AF_UNSPEC);
return NM_MAX_WITH_CMP(nm_connectivity_state_cmp,
@@ -4653,10 +4667,10 @@ nm_device_master_enslave_slave(NMDevice *self, NMDevice *slave, NMConnection *co
*/
if (success) {
if (priv->ip_state_4 == NM_DEVICE_IP_STATE_WAIT)
- nm_device_activate_stage3_ip4_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET);
if (priv->ip_state_6 == NM_DEVICE_IP_STATE_WAIT)
- nm_device_activate_stage3_ip6_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET6);
}
/* Since slave devices don't have their own IP configuration,
@@ -4887,9 +4901,9 @@ carrier_changed(NMDevice *self, gboolean carrier)
/* If needed, also resume IP configuration that is
* waiting for carrier. */
if (nm_device_activate_ip4_state_in_wait(self))
- nm_device_activate_stage3_ip4_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET);
if (nm_device_activate_ip6_state_in_wait(self))
- nm_device_activate_stage3_ip6_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET6);
return;
}
/* fall-through and change state of device */
@@ -5883,7 +5897,6 @@ realize_start_setup(NMDevice * self,
NMDevicePrivate * priv;
NMDeviceClass * klass;
NMPlatform * platform;
- static guint32 id = 0;
NMDeviceCapabilities capabilities = 0;
NMConfig * config;
guint real_rate;
@@ -5969,7 +5982,12 @@ realize_start_setup(NMDevice * self,
if (!priv->udi) {
/* Use a placeholder UDI until we get a real one */
- priv->udi = g_strdup_printf("/virtual/device/placeholder/%d", id++);
+ if (priv->udi_id == 0) {
+ static guint64 udi_id_counter = 0;
+
+ priv->udi_id = ++udi_id_counter;
+ }
+ priv->udi = g_strdup_printf("/virtual/device/placeholder/%" G_GUINT64_FORMAT, priv->udi_id);
_notify(self, PROP_UDI);
}
@@ -7659,7 +7677,7 @@ static void
activation_source_clear(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
if (priv->activation_source_id_x[IS_IPv4] != 0) {
_LOGD(LOGD_DEVICE,
@@ -7676,7 +7694,7 @@ static gboolean
activation_source_handle_cb(NMDevice *self, int addr_family)
{
NMDevicePrivate * priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
ActivationHandleFunc activation_source_func;
guint activation_source_id;
@@ -7726,7 +7744,7 @@ static void
activation_source_schedule(NMDevice *self, ActivationHandleFunc func, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
guint new_id = 0;
if (priv->activation_source_id_x[IS_IPv4] != 0
@@ -7769,7 +7787,7 @@ static void
activation_source_invoke_sync(NMDevice *self, ActivationHandleFunc func, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
if (priv->activation_source_id_x[IS_IPv4] == 0) {
_LOGD(LOGD_DEVICE,
@@ -7923,13 +7941,13 @@ sriov_vf_config_to_platform(NMDevice *self, NMSriovVF *vf, GError **error)
}
static void
-sriov_params_cb(GError *error, gpointer data)
+sriov_params_cb(GError *error, gpointer user_data)
{
NMDevice * self;
NMDevicePrivate *priv;
nm_auto_freev NMPlatformVF **plat_vfs = NULL;
- nm_utils_user_data_unpack(data, &self, &plat_vfs);
+ nm_utils_user_data_unpack(user_data, &self, &plat_vfs);
if (nm_utils_error_is_cancelled_or_disposing(error))
return;
@@ -8758,7 +8776,7 @@ ensure_con_ip_config(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
NMConnection * connection;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMIPConfig * con_ip_config;
if (priv->con_ip_config_x[IS_IPv4])
@@ -8835,7 +8853,7 @@ ip_config_merge_and_apply(NMDevice *self, int addr_family, gboolean commit)
gboolean ignore_default_routes = FALSE;
GSList * iter;
const char * ip6_addr_gen_token = NULL;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
if (nm_device_sys_iface_state_is_external(self))
commit = FALSE;
@@ -9079,12 +9097,12 @@ static gboolean
dhcp_grace_period_expired(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
priv->dhcp_data_x[IS_IPv4].grace_id = 0;
priv->dhcp_data_x[IS_IPv4].grace_pending = FALSE;
- _LOGI(LOGD_DHCP_from_addr_family(addr_family),
+ _LOGI(LOGD_DHCPX(IS_IPv4),
"DHCPv%c: grace period expired",
nm_utils_addr_family_to_char(addr_family));
@@ -9110,7 +9128,7 @@ static gboolean
dhcp_grace_period_start(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
guint32 timeout;
/* In any other case (expired lease, assumed connection, etc.),
@@ -9125,12 +9143,12 @@ dhcp_grace_period_start(NMDevice *self, int addr_family)
* by a constant factor. */
timeout = _prop_get_ipvx_dhcp_timeout(self, addr_family);
if (timeout == NM_DHCP_TIMEOUT_INFINITY)
- _LOGI(LOGD_DHCP_from_addr_family(addr_family),
+ _LOGI(LOGD_DHCPX(IS_IPv4),
"DHCPv%c: trying to acquire a new lease",
nm_utils_addr_family_to_char(addr_family));
else {
timeout = dhcp_grace_period_from_timeout(timeout);
- _LOGI(LOGD_DHCP_from_addr_family(addr_family),
+ _LOGI(LOGD_DHCPX(IS_IPv4),
"DHCPv%c: trying to acquire a new lease within %u seconds",
nm_utils_addr_family_to_char(addr_family),
timeout);
@@ -9434,7 +9452,7 @@ connection_ip_method_requires_carrier(NMConnection *connection,
method = nm_utils_get_ip_config_method(connection, addr_family);
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
NM_SET_OUT(out_ip_enabled, !nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED));
return NM_IN_STRSET(method,
NM_SETTING_IP4_CONFIG_METHOD_AUTO,
@@ -10969,7 +10987,7 @@ ip_requires_slaves(NMDevice *self, int addr_family)
method = nm_device_get_effective_ip_config_method(self, addr_family);
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
return nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
/* SLAAC, DHCP, and Link-Local depend on connectivity (and thus slaves)
@@ -10986,7 +11004,7 @@ act_stage3_ip_config_start(NMDevice * self,
gpointer * out_config,
NMDeviceStateReason *out_failure_reason)
{
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
NMConnection * connection;
NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
@@ -11208,103 +11226,62 @@ act_stage3_ip_config_start(NMDevice * self,
}
}
-/**
- * nm_device_activate_stage3_ip4_start:
- * @self: the device
- *
- * Try starting IPv4 configuration.
- */
gboolean
-nm_device_activate_stage3_ip4_start(NMDevice *self)
+nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family)
{
- NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
NMActStageReturn ret;
- NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
- gs_unref_object NMIP4Config *ip4_config = NULL;
+ NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
+ gs_unref_object NMIPConfig *ip_config = NULL;
- g_assert(priv->ip_state_4 == NM_DEVICE_IP_STATE_WAIT);
+ g_assert(priv->ip_state_x[IS_IPv4] == NM_DEVICE_IP_STATE_WAIT);
if (nm_device_sys_iface_state_is_external(self)) {
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_DONE);
check_ip_state(self, FALSE, TRUE);
return TRUE;
}
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_CONF);
- ret = NM_DEVICE_GET_CLASS(self)->act_stage3_ip_config_start(self,
- AF_INET,
- (gpointer *) &ip4_config,
- &failure_reason);
- if (ret == NM_ACT_STAGE_RETURN_SUCCESS)
- nm_device_activate_schedule_ip_config_result(self, AF_INET, NM_IP_CONFIG_CAST(ip4_config));
- else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) {
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
- } else if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
- nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
- return FALSE;
- } else if (ret == NM_ACT_STAGE_RETURN_IP_FAIL) {
- /* Activation not wanted */
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_FAIL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_WAIT) {
- /* Wait for something to try IP config again */
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_WAIT);
- } else
- g_assert(ret == NM_ACT_STAGE_RETURN_POSTPONE);
-
- return TRUE;
-}
-
-/**
- * nm_device_activate_stage3_ip6_start:
- * @self: the device
- *
- * Try starting IPv6 configuration.
- */
-gboolean
-nm_device_activate_stage3_ip6_start(NMDevice *self)
-{
- NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
- NMActStageReturn ret;
- NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
- gs_unref_object NMIP6Config *ip6_config = NULL;
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_CONF);
- g_assert(priv->ip_state_6 == NM_DEVICE_IP_STATE_WAIT);
-
- if (nm_device_sys_iface_state_is_external(self)) {
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
- return TRUE;
- }
-
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_CONF);
ret = NM_DEVICE_GET_CLASS(self)->act_stage3_ip_config_start(self,
- AF_INET6,
- (gpointer *) &ip6_config,
+ addr_family,
+ (gpointer *) &ip_config,
&failure_reason);
- if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
- if (!ip6_config)
- ip6_config = nm_device_ip6_config_new(self);
- /* Here we get a static IPv6 config, like for Shared where it's
- * autogenerated or from modems where it comes from ModemManager.
- */
- nm_assert(!applied_config_get_current(&priv->ac_ip6_config));
- applied_config_init(&priv->ac_ip6_config, ip6_config);
- nm_device_activate_schedule_ip_config_result(self, AF_INET6, NULL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) {
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
+
+ switch (ret) {
+ case NM_ACT_STAGE_RETURN_SUCCESS:
+ if (!IS_IPv4) {
+ /* Here we get a static IPv6 config, like for Shared where it's
+ * autogenerated or from modems where it comes from ModemManager.
+ */
+ if (!ip_config)
+ ip_config = nm_device_ip_config_new(self, addr_family);
+ nm_assert(!applied_config_get_current(&priv->ac_ip6_config));
+ applied_config_init(&priv->ac_ip6_config, ip_config);
+ ip_config = NULL;
+ }
+ nm_device_activate_schedule_ip_config_result(self, addr_family, ip_config);
+ break;
+ case NM_ACT_STAGE_RETURN_IP_DONE:
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_DONE);
check_ip_state(self, FALSE, TRUE);
- } else if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
+ break;
+ case NM_ACT_STAGE_RETURN_FAILURE:
nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
return FALSE;
- } else if (ret == NM_ACT_STAGE_RETURN_IP_FAIL) {
+ case NM_ACT_STAGE_RETURN_IP_FAIL:
/* Activation not wanted */
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_FAIL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_WAIT) {
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_FAIL);
+ break;
+ case NM_ACT_STAGE_RETURN_IP_WAIT:
/* Wait for something to try IP config again */
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_WAIT);
- } else
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_WAIT);
+ break;
+ default:
g_assert(ret == NM_ACT_STAGE_RETURN_POSTPONE);
+ }
return TRUE;
}
@@ -11334,12 +11311,12 @@ activate_stage3_ip_config_start(NMDevice *self)
"interface %s not up for IP configuration",
nm_device_get_ip_iface(self));
- /* IPv4 */
- if (nm_device_activate_ip4_state_in_wait(self) && !nm_device_activate_stage3_ip4_start(self))
+ if (nm_device_activate_ip4_state_in_wait(self)
+ && !nm_device_activate_stage3_ip_start(self, AF_INET))
return;
- /* IPv6 */
- if (nm_device_activate_ip6_state_in_wait(self) && !nm_device_activate_stage3_ip6_start(self))
+ if (nm_device_activate_ip6_state_in_wait(self)
+ && !nm_device_activate_stage3_ip_start(self, AF_INET6))
return;
/* Proxy */
@@ -11479,37 +11456,45 @@ act_stage4_ip_config_timeout(NMDevice * self,
return NM_ACT_STAGE_RETURN_SUCCESS;
}
-/*
- * nm_device_activate_stage4_ip4_config_timeout
- *
- * Time out on retrieving the IPv4 config.
- *
- */
static void
-activate_stage4_ip_config_timeout_4(NMDevice *self)
+activate_stage4_ip_config_timeout_x(NMDevice *self, int addr_family)
{
- NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
+ NMActStageReturn ret;
+
+ ret =
+ NM_DEVICE_GET_CLASS(self)->act_stage4_ip_config_timeout(self, addr_family, &failure_reason);
- ret = NM_DEVICE_GET_CLASS(self)->act_stage4_ip_config_timeout(self, AF_INET, &failure_reason);
if (ret == NM_ACT_STAGE_RETURN_POSTPONE)
return;
- else if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
+
+ if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
return;
}
g_assert(ret == NM_ACT_STAGE_RETURN_SUCCESS);
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_FAIL);
-
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_FAIL);
check_ip_state(self, FALSE, TRUE);
}
+static void
+activate_stage4_ip_config_timeout_4(NMDevice *self)
+{
+ activate_stage4_ip_config_timeout_x(self, AF_INET);
+}
+
+static void
+activate_stage4_ip_config_timeout_6(NMDevice *self)
+{
+ activate_stage4_ip_config_timeout_x(self, AF_INET6);
+}
+
void
nm_device_activate_schedule_ip_config_timeout(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_if_fail(NM_IS_DEVICE(self));
g_return_if_fail(NM_IN_SET(addr_family, AF_INET, AF_INET6));
@@ -11518,43 +11503,25 @@ nm_device_activate_schedule_ip_config_timeout(NMDevice *self, int addr_family)
g_return_if_fail(priv->act_request.obj);
- activation_source_schedule(self, activate_stage4_ip_config_timeout_x[IS_IPv4], addr_family);
-}
-
-static void
-activate_stage4_ip_config_timeout_6(NMDevice *self)
-{
- NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
- NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
-
- ret = NM_DEVICE_GET_CLASS(self)->act_stage4_ip_config_timeout(self, AF_INET6, &failure_reason);
- if (ret == NM_ACT_STAGE_RETURN_POSTPONE)
- return;
- if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
- nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
- return;
- }
- g_assert(ret == NM_ACT_STAGE_RETURN_SUCCESS);
-
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_FAIL);
-
- check_ip_state(self, FALSE, TRUE);
+ activation_source_schedule(self,
+ IS_IPv4 ? activate_stage4_ip_config_timeout_4
+ : activate_stage4_ip_config_timeout_6,
+ addr_family);
}
static gboolean
share_init(NMDevice *self, GError **error)
{
- char * modules[] = {"ip_tables",
- "iptable_nat",
- "nf_nat_ftp",
- "nf_nat_irc",
- "nf_nat_sip",
- "nf_nat_tftp",
- "nf_nat_pptp",
- "nf_nat_h323",
- NULL};
- char **iter;
- int errsv;
+ const char *const modules[] = {"ip_tables",
+ "iptable_nat",
+ "nf_nat_ftp",
+ "nf_nat_irc",
+ "nf_nat_sip",
+ "nf_nat_tftp",
+ "nf_nat_pptp",
+ "nf_nat_h323"};
+ guint i;
+ int errsv;
if (nm_platform_sysctl_get_int32(nm_device_get_platform(self),
NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv4/ip_forward"),
@@ -11592,35 +11559,24 @@ share_init(NMDevice *self, GError **error)
nm_strerror_native(errsv));
}
- for (iter = modules; *iter; iter++)
- nm_utils_modprobe(NULL, FALSE, *iter, NULL);
+ for (i = 0; i < G_N_ELEMENTS(modules); i++)
+ nm_utils_modprobe(NULL, FALSE, modules[i], NULL);
return TRUE;
}
-#define add_share_rule(req, table, ...) \
- G_STMT_START \
- { \
- char *_cmd = g_strdup_printf(__VA_ARGS__); \
- nm_act_request_add_share_rule(req, table, _cmd); \
- g_free(_cmd); \
- } \
- G_STMT_END
-
static gboolean
start_sharing(NMDevice *self, NMIP4Config *config, GError **error)
{
NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
NMActRequest * req;
- char str_addr[INET_ADDRSTRLEN];
- char str_mask[INET_ADDRSTRLEN];
- guint32 netmask, network;
const NMPlatformIP4Address *ip4_addr = NULL;
const char * ip_iface;
GError * local = NULL;
NMConnection * conn;
NMSettingConnection * s_con;
gboolean announce_android_metered;
+ NMUtilsShareRules * share_rules;
g_return_val_if_fail(config, FALSE);
@@ -11645,57 +11601,13 @@ start_sharing(NMDevice *self, NMIP4Config *config, GError **error)
req = nm_device_get_act_request(self);
g_return_val_if_fail(req, FALSE);
- netmask = _nm_utils_ip4_prefix_to_netmask(ip4_addr->plen);
- _nm_utils_inet4_ntop(netmask, str_mask);
-
- network = ip4_addr->address & netmask;
- _nm_utils_inet4_ntop(network, str_addr);
-
- add_share_rule(req,
- "nat",
- "POSTROUTING --source %s/%s ! --destination %s/%s --jump MASQUERADE",
- str_addr,
- str_mask,
- str_addr,
- str_mask);
- add_share_rule(req,
- "filter",
- "FORWARD --destination %s/%s --out-interface %s --match state --state "
- "ESTABLISHED,RELATED --jump ACCEPT",
- str_addr,
- str_mask,
- ip_iface);
- add_share_rule(req,
- "filter",
- "FORWARD --source %s/%s --in-interface %s --jump ACCEPT",
- str_addr,
- str_mask,
- ip_iface);
- add_share_rule(req,
- "filter",
- "FORWARD --in-interface %s --out-interface %s --jump ACCEPT",
- ip_iface,
- ip_iface);
- add_share_rule(req, "filter", "FORWARD --out-interface %s --jump REJECT", ip_iface);
- add_share_rule(req, "filter", "FORWARD --in-interface %s --jump REJECT", ip_iface);
- add_share_rule(req,
- "filter",
- "INPUT --in-interface %s --protocol udp --destination-port 67 --jump ACCEPT",
- ip_iface);
- add_share_rule(req,
- "filter",
- "INPUT --in-interface %s --protocol tcp --destination-port 67 --jump ACCEPT",
- ip_iface);
- add_share_rule(req,
- "filter",
- "INPUT --in-interface %s --protocol udp --destination-port 53 --jump ACCEPT",
- ip_iface);
- add_share_rule(req,
- "filter",
- "INPUT --in-interface %s --protocol tcp --destination-port 53 --jump ACCEPT",
- ip_iface);
-
- nm_act_request_set_shared(req, TRUE);
+ share_rules = nm_utils_share_rules_new();
+
+ nm_utils_share_rules_add_all_rules(share_rules, ip_iface, ip4_addr->address, ip4_addr->plen);
+
+ nm_utils_share_rules_apply(share_rules, TRUE);
+
+ nm_act_request_set_shared(req, share_rules);
conn = nm_act_request_get_applied_connection(req);
s_con = nm_connection_get_setting_connection(conn);
@@ -11730,7 +11642,7 @@ start_sharing(NMDevice *self, NMIP4Config *config, GError **error)
"could not start dnsmasq due to %s",
local->message);
g_error_free(local);
- nm_act_request_set_shared(req, FALSE);
+ nm_act_request_set_shared(req, NULL);
return FALSE;
}
@@ -11798,12 +11710,14 @@ nm_device_arp_announce(NMDevice *self)
}
static void
-activate_stage5_ip_config_result_4(NMDevice *self)
+activate_stage5_ip_config_result_x(NMDevice *self, int addr_family)
{
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
NMActRequest * req;
const char * method;
int ip_ifindex;
+ int errsv;
gboolean do_announce = FALSE;
req = nm_device_get_act_request(self);
@@ -11811,6 +11725,8 @@ activate_stage5_ip_config_result_4(NMDevice *self)
/* Interface must be IFF_UP before IP config can be applied */
ip_ifindex = nm_device_get_ip_ifindex(self);
+ g_return_if_fail(ip_ifindex);
+
if (!nm_platform_link_is_up(nm_device_get_platform(self), ip_ifindex)
&& !nm_device_sys_iface_state_is_external_or_assume(self)) {
nm_platform_link_set_up(nm_device_get_platform(self), ip_ifindex, NULL);
@@ -11820,86 +11736,172 @@ activate_stage5_ip_config_result_4(NMDevice *self)
nm_device_get_ip_iface(self));
}
- if (!ip_config_merge_and_apply(self, AF_INET, TRUE)) {
- _LOGD(LOGD_DEVICE | LOGD_IP4, "Activation: Stage 5 of 5 (IPv4 Commit) failed");
- nm_device_ip_method_failed(self, AF_INET, NM_DEVICE_STATE_REASON_CONFIG_FAILED);
+ if (!ip_config_merge_and_apply(self, addr_family, TRUE)) {
+ _LOGD(LOGD_DEVICE | LOGD_IPX(IS_IPv4),
+ "Activation: Stage 5 of 5 (IPv%c Commit) failed",
+ nm_utils_addr_family_to_char(addr_family));
+ nm_device_ip_method_failed(self, addr_family, NM_DEVICE_STATE_REASON_CONFIG_FAILED);
return;
}
- /* Start IPv4 sharing if we need it */
- method = nm_device_get_effective_ip_config_method(self, AF_INET);
- if (nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) {
- gs_free_error GError *error = NULL;
+ if (!IS_IPv4) {
+ if (priv->dhcp6.mode != NM_NDISC_DHCP_LEVEL_NONE
+ && priv->ip_state_6 == NM_DEVICE_IP_STATE_CONF) {
+ if (applied_config_get_current(&priv->dhcp6.ip6_config)) {
+ /* If IPv6 wasn't the first IP to complete, and DHCP was used,
+ * then ensure dispatcher scripts get the DHCP lease information.
+ */
+ nm_dispatcher_call_device(NM_DISPATCHER_ACTION_DHCP6_CHANGE,
+ self,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ } else {
+ /* still waiting for first dhcp6 lease. */
+ return;
+ }
+ }
+ }
- if (!start_sharing(self, priv->ip_config_4, &error)) {
- _LOGW(LOGD_SHARING,
- "Activation: Stage 5 of 5 (IPv4 Commit) start sharing failed: %s",
- error->message);
- nm_device_ip_method_failed(self, AF_INET, NM_DEVICE_STATE_REASON_SHARED_START_FAILED);
- return;
+ /* Start IPv4 sharing/IPv6 forwarding if we need it */
+ method = nm_device_get_effective_ip_config_method(self, addr_family);
+ if (IS_IPv4) {
+ if (nm_streq(method, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) {
+ gs_free_error GError *error = NULL;
+
+ if (!start_sharing(self, priv->ip_config_4, &error)) {
+ _LOGW(LOGD_SHARING,
+ "Activation: Stage 5 of 5 (IPv4 Commit) start sharing failed: %s",
+ error->message);
+ nm_device_ip_method_failed(self,
+ AF_INET,
+ NM_DEVICE_STATE_REASON_SHARED_START_FAILED);
+ return;
+ }
+ }
+ } else {
+ if (nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_SHARED)) {
+ if (!nm_platform_sysctl_set(
+ nm_device_get_platform(self),
+ NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv6/conf/all/forwarding"),
+ "1")) {
+ errsv = errno;
+ _LOGE(LOGD_SHARING,
+ "share: error enabling IPv6 forwarding: (%d) %s",
+ errsv,
+ nm_strerror_native(errsv));
+ nm_device_ip_method_failed(self,
+ AF_INET6,
+ NM_DEVICE_STATE_REASON_SHARED_START_FAILED);
+ return;
+ }
}
}
- if (priv->dhcp_data_4.client) {
- gs_free_error GError *error = NULL;
+ if (IS_IPv4) {
+ if (priv->dhcp_data_4.client) {
+ gs_free_error GError *error = NULL;
- if (!nm_dhcp_client_accept(priv->dhcp_data_4.client, &error)) {
- _LOGW(LOGD_DHCP4,
- "Activation: Stage 5 of 5 (IPv4 Commit) error accepting lease: %s",
- error->message);
- nm_device_ip_method_failed(self, AF_INET, NM_DEVICE_STATE_REASON_DHCP_ERROR);
- return;
+ if (!nm_dhcp_client_accept(priv->dhcp_data_4.client, &error)) {
+ _LOGW(LOGD_DHCP4,
+ "Activation: Stage 5 of 5 (IPv4 Commit) error accepting lease: %s",
+ error->message);
+ nm_device_ip_method_failed(self, AF_INET, NM_DEVICE_STATE_REASON_DHCP_ERROR);
+ return;
+ }
+ }
+
+ /* If IPv4 wasn't the first to complete, and DHCP was used, then ensure
+ * dispatcher scripts get the DHCP lease information.
+ */
+ if (priv->dhcp_data_4.client && nm_device_activate_ip4_state_in_conf(self)
+ && (nm_device_get_state(self) > NM_DEVICE_STATE_IP_CONFIG)) {
+ nm_dispatcher_call_device(NM_DISPATCHER_ACTION_DHCP4_CHANGE,
+ self,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
}
}
- /* If IPv4 wasn't the first to complete, and DHCP was used, then ensure
- * dispatcher scripts get the DHCP lease information.
- */
- if (priv->dhcp_data_4.client && nm_device_activate_ip4_state_in_conf(self)
- && (nm_device_get_state(self) > NM_DEVICE_STATE_IP_CONFIG)) {
- nm_dispatcher_call_device(NM_DISPATCHER_ACTION_DHCP4_CHANGE, self, NULL, NULL, NULL, NULL);
+ if (!IS_IPv4) {
+ /* Check if we have to wait for DAD */
+ if (priv->ip_state_6 == NM_DEVICE_IP_STATE_CONF && !priv->dad6_ip6_config) {
+ if (!priv->carrier && priv->ignore_carrier && get_ip_config_may_fail(self, AF_INET6))
+ _LOGI(LOGD_DEVICE | LOGD_IP6,
+ "IPv6 DAD: carrier missing and ignored, not delaying activation");
+ else
+ priv->dad6_ip6_config = dad6_get_pending_addresses(self);
+
+ if (priv->dad6_ip6_config) {
+ _LOGD(LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: awaiting termination");
+ } else {
+ _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
+ check_ip_state(self, FALSE, TRUE);
+ }
+ }
}
- /* Send ARP announcements */
+ if (IS_IPv4) {
+ /* Send ARP announcements */
- if (nm_device_is_master(self)) {
- CList * iter;
- SlaveInfo *info;
+ if (nm_device_is_master(self)) {
+ CList * iter;
+ SlaveInfo *info;
- /* Skip announcement if there are no device enslaved, for two reasons:
- * 1) the master has a temporary MAC address until the first slave comes
- * 2) announcements are going to be dropped anyway without slaves
- */
- do_announce = FALSE;
+ /* Skip announcement if there are no device enslaved, for two reasons:
+ * 1) the master has a temporary MAC address until the first slave comes
+ * 2) announcements are going to be dropped anyway without slaves
+ */
+ do_announce = FALSE;
- c_list_for_each (iter, &priv->slaves) {
- info = c_list_entry(iter, SlaveInfo, lst_slave);
- if (info->slave_is_enslaved) {
- do_announce = TRUE;
- break;
+ c_list_for_each (iter, &priv->slaves) {
+ info = c_list_entry(iter, SlaveInfo, lst_slave);
+ if (info->slave_is_enslaved) {
+ do_announce = TRUE;
+ break;
+ }
}
- }
- } else
- do_announce = TRUE;
+ } else
+ do_announce = TRUE;
- if (do_announce)
- nm_device_arp_announce(self);
+ if (do_announce)
+ nm_device_arp_announce(self);
+ }
- /* Enter the IP_CHECK state if this is the first method to complete */
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
+ if (IS_IPv4) {
+ /* Enter the IP_CHECK state if this is the first method to complete */
+ _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
+ check_ip_state(self, FALSE, TRUE);
+ }
}
+static void
+activate_stage5_ip_config_result_4(NMDevice *self)
+{
+ activate_stage5_ip_config_result_x(self, AF_INET);
+}
+
+static void
+activate_stage5_ip_config_result_6(NMDevice *self)
+{
+ activate_stage5_ip_config_result_x(self, AF_INET6);
+}
+
+#define activate_stage5_ip_config_result_x_fcn(addr_family) \
+ (NM_IS_IPv4(addr_family) ? activate_stage5_ip_config_result_4 \
+ : activate_stage5_ip_config_result_6)
+
void
nm_device_activate_schedule_ip_config_result(NMDevice *self, int addr_family, NMIPConfig *config)
{
NMDevicePrivate *priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_if_fail(NM_IS_DEVICE(self));
- g_return_if_fail(NM_IN_SET(addr_family, AF_INET, AF_INET6));
- g_return_if_fail(
- !config || (addr_family == AF_INET && nm_ip_config_get_addr_family(config) == AF_INET));
+ g_return_if_fail(!config || (IS_IPv4 && nm_ip_config_get_addr_family(config) == AF_INET));
priv = NM_DEVICE_GET_PRIVATE(self);
@@ -11913,13 +11915,15 @@ nm_device_activate_schedule_ip_config_result(NMDevice *self, int addr_family, NM
_set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_CONF);
}
- activation_source_schedule(self, activate_stage5_ip_config_result_x[IS_IPv4], addr_family);
+ activation_source_schedule(self,
+ activate_stage5_ip_config_result_x_fcn(addr_family),
+ addr_family);
}
NMDeviceIPState
nm_device_activate_get_ip_state(NMDevice *self, int addr_family)
{
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_val_if_fail(NM_IS_DEVICE(self), NM_DEVICE_IP_STATE_NONE);
g_return_val_if_fail(NM_IN_SET(addr_family, AF_INET, AF_INET6), NM_DEVICE_IP_STATE_NONE);
@@ -11994,89 +11998,6 @@ dad6_get_pending_addresses(NMDevice *self)
return dad6_config;
}
-static void
-activate_stage5_ip_config_result_6(NMDevice *self)
-{
- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- NMActRequest * req;
- const char * method;
- int ip_ifindex;
- int errsv;
-
- req = nm_device_get_act_request(self);
- g_assert(req);
-
- /* Interface must be IFF_UP before IP config can be applied */
- ip_ifindex = nm_device_get_ip_ifindex(self);
- g_return_if_fail(ip_ifindex);
-
- if (!nm_platform_link_is_up(nm_device_get_platform(self), ip_ifindex)
- && !nm_device_sys_iface_state_is_external_or_assume(self)) {
- nm_platform_link_set_up(nm_device_get_platform(self), ip_ifindex, NULL);
- if (!nm_platform_link_is_up(nm_device_get_platform(self), ip_ifindex))
- _LOGW(LOGD_DEVICE,
- "interface %s not up for IP configuration",
- nm_device_get_ip_iface(self));
- }
-
- if (ip_config_merge_and_apply(self, AF_INET6, TRUE)) {
- if (priv->dhcp6.mode != NM_NDISC_DHCP_LEVEL_NONE
- && priv->ip_state_6 == NM_DEVICE_IP_STATE_CONF) {
- if (applied_config_get_current(&priv->dhcp6.ip6_config)) {
- /* If IPv6 wasn't the first IP to complete, and DHCP was used,
- * then ensure dispatcher scripts get the DHCP lease information.
- */
- nm_dispatcher_call_device(NM_DISPATCHER_ACTION_DHCP6_CHANGE,
- self,
- NULL,
- NULL,
- NULL,
- NULL);
- } else {
- /* still waiting for first dhcp6 lease. */
- return;
- }
- }
-
- /* Start IPv6 forwarding if we need it */
- method = nm_device_get_effective_ip_config_method(self, AF_INET6);
- if (nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_SHARED)) {
- if (!nm_platform_sysctl_set(
- nm_device_get_platform(self),
- NMP_SYSCTL_PATHID_ABSOLUTE("/proc/sys/net/ipv6/conf/all/forwarding"),
- "1")) {
- errsv = errno;
- _LOGE(LOGD_SHARING,
- "share: error enabling IPv6 forwarding: (%d) %s",
- errsv,
- nm_strerror_native(errsv));
- nm_device_ip_method_failed(self,
- AF_INET6,
- NM_DEVICE_STATE_REASON_SHARED_START_FAILED);
- }
- }
-
- /* Check if we have to wait for DAD */
- if (priv->ip_state_6 == NM_DEVICE_IP_STATE_CONF && !priv->dad6_ip6_config) {
- if (!priv->carrier && priv->ignore_carrier && get_ip_config_may_fail(self, AF_INET6))
- _LOGI(LOGD_DEVICE | LOGD_IP6,
- "IPv6 DAD: carrier missing and ignored, not delaying activation");
- else
- priv->dad6_ip6_config = dad6_get_pending_addresses(self);
-
- if (priv->dad6_ip6_config) {
- _LOGD(LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: awaiting termination");
- } else {
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
- }
- }
- } else {
- _LOGW(LOGD_DEVICE | LOGD_IP6, "Activation: Stage 5 of 5 (IPv6 Commit) failed");
- nm_device_ip_method_failed(self, AF_INET6, NM_DEVICE_STATE_REASON_CONFIG_FAILED);
- }
-}
-
/*****************************************************************************/
static void
@@ -12230,7 +12151,7 @@ static void
_cleanup_ip_pre(NMDevice *self, int addr_family, CleanupType cleanup_type)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
_set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_NONE);
@@ -12326,55 +12247,86 @@ _nm_device_hash_check_invalid_keys(GHashTable * hash,
}
void
-nm_device_reactivate_ip4_config(NMDevice * self,
- NMSettingIPConfig *s_ip4_old,
- NMSettingIPConfig *s_ip4_new)
+nm_device_reactivate_ip_config(NMDevice * self,
+ int addr_family,
+ NMSettingIPConfig *s_ip_old,
+ NMSettingIPConfig *s_ip_new)
{
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDevicePrivate *priv;
- const char * method_old, *method_new;
+ const char * method_old;
+ const char * method_new;
g_return_if_fail(NM_IS_DEVICE(self));
+
priv = NM_DEVICE_GET_PRIVATE(self);
- if (priv->ip_state_4 != NM_DEVICE_IP_STATE_NONE) {
- g_clear_object(&priv->con_ip_config_4);
- g_clear_object(&priv->ext_ip_config_4);
+ if (priv->ip_state_x[IS_IPv4] == NM_DEVICE_IP_STATE_NONE)
+ return;
+
+ g_clear_object(&priv->con_ip_config_x[IS_IPv4]);
+ g_clear_object(&priv->ext_ip_config_x[IS_IPv4]);
+ if (IS_IPv4) {
g_clear_object(&priv->dev_ip_config_4.current);
- g_clear_object(&priv->dev2_ip_config_4.current);
- priv->con_ip_config_4 = nm_device_ip4_config_new(self);
+ } else {
+ g_clear_object(&priv->ac_ip6_config.current);
+ g_clear_object(&priv->dhcp6.ip6_config.current);
+ }
+ g_clear_object(&priv->dev2_ip_config_x[IS_IPv4].current);
+
+ if (!IS_IPv4) {
+ if (priv->ipv6ll_handle && !IN6_IS_ADDR_UNSPECIFIED(&priv->ipv6ll_addr))
+ priv->ipv6ll_has = TRUE;
+ }
+
+ priv->con_ip_config_x[IS_IPv4] = nm_device_ip_config_new(self, addr_family);
+
+ if (IS_IPv4) {
nm_ip4_config_merge_setting(priv->con_ip_config_4,
- s_ip4_new,
+ s_ip_new,
_prop_get_connection_mdns(self),
_prop_get_connection_llmnr(self),
nm_device_get_route_table(self, AF_INET),
nm_device_get_route_metric(self, AF_INET));
+ } else {
+ nm_ip6_config_merge_setting(priv->con_ip_config_6,
+ s_ip_new,
+ nm_device_get_route_table(self, AF_INET6),
+ nm_device_get_route_metric(self, AF_INET6));
+ }
- method_old = s_ip4_old ? nm_setting_ip_config_get_method(s_ip4_old)
- : NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
- method_new = s_ip4_new ? nm_setting_ip_config_get_method(s_ip4_new)
- : NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
+ method_old = (s_ip_old ? nm_setting_ip_config_get_method(s_ip_old) : NULL)
+ ?: (IS_IPv4 ? NM_SETTING_IP4_CONFIG_METHOD_DISABLED
+ : NM_SETTING_IP6_CONFIG_METHOD_IGNORE);
+ method_new = (s_ip_new ? nm_setting_ip_config_get_method(s_ip_new) : NULL)
+ ?: (IS_IPv4 ? NM_SETTING_IP4_CONFIG_METHOD_DISABLED
+ : NM_SETTING_IP6_CONFIG_METHOD_IGNORE);
- if (!nm_streq0(method_old, method_new)) {
- _cleanup_ip_pre(self, AF_INET, CLEANUP_TYPE_DECONFIGURE);
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_WAIT);
- if (!nm_device_activate_stage3_ip4_start(self))
- _LOGW(LOGD_IP4, "Failed to apply IPv4 configuration");
- return;
+ if (!nm_streq0(method_old, method_new)) {
+ _cleanup_ip_pre(self, addr_family, CLEANUP_TYPE_DECONFIGURE);
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_WAIT);
+ if (!nm_device_activate_stage3_ip_start(self, addr_family)) {
+ _LOGW(LOGD_IP4,
+ "Failed to apply IPv%c configuration",
+ nm_utils_addr_family_to_char(addr_family));
}
+ return;
+ }
- if (s_ip4_old && s_ip4_new) {
- gint64 metric_old, metric_new;
+ if (s_ip_old && s_ip_new) {
+ gint64 metric_old, metric_new;
- /* For dynamic IP methods (DHCP, IPv4LL, WWAN) the route metric is
- * set at activation/renewal time using the value from static
- * configuration. To support runtime change we need to update the
- * dynamic configuration in place and tell the DHCP client the new
- * value to use for future renewals.
- */
- metric_old = nm_setting_ip_config_get_route_metric(s_ip4_old);
- metric_new = nm_setting_ip_config_get_route_metric(s_ip4_new);
+ /* For dynamic IP methods (DHCP, IPv4LL, WWAN) the route metric is
+ * set at activation/renewal time using the value from static
+ * configuration. To support runtime change we need to update the
+ * dynamic configuration in place and tell the DHCP client the new
+ * value to use for future renewals.
+ */
+ metric_old = nm_setting_ip_config_get_route_metric(s_ip_old);
+ metric_new = nm_setting_ip_config_get_route_metric(s_ip_new);
- if (metric_old != metric_new) {
+ if (metric_old != metric_new) {
+ if (IS_IPv4) {
if (priv->dev_ip_config_4.orig) {
nm_ip4_config_update_routes_metric((NMIP4Config *) priv->dev_ip_config_4.orig,
nm_device_get_route_metric(self, AF_INET));
@@ -12387,60 +12339,7 @@ nm_device_reactivate_ip4_config(NMDevice * self,
nm_dhcp_client_set_route_metric(priv->dhcp_data_4.client,
nm_device_get_route_metric(self, AF_INET));
}
- }
- }
-
- if (nm_device_get_ip_ifindex(self) > 0 && !ip_config_merge_and_apply(self, AF_INET, TRUE))
- _LOGW(LOGD_IP4, "Failed to reapply IPv4 configuration");
- }
-}
-
-void
-nm_device_reactivate_ip6_config(NMDevice * self,
- NMSettingIPConfig *s_ip6_old,
- NMSettingIPConfig *s_ip6_new)
-{
- NMDevicePrivate *priv;
- const char * method_old, *method_new;
-
- g_return_if_fail(NM_IS_DEVICE(self));
- priv = NM_DEVICE_GET_PRIVATE(self);
-
- if (priv->ip_state_6 != NM_DEVICE_IP_STATE_NONE) {
- g_clear_object(&priv->con_ip_config_6);
- g_clear_object(&priv->ext_ip_config_6);
- g_clear_object(&priv->ac_ip6_config.current);
- g_clear_object(&priv->dhcp6.ip6_config.current);
- g_clear_object(&priv->dev2_ip_config_6.current);
- if (priv->ipv6ll_handle && !IN6_IS_ADDR_UNSPECIFIED(&priv->ipv6ll_addr))
- priv->ipv6ll_has = TRUE;
- priv->con_ip_config_6 = nm_device_ip6_config_new(self);
- nm_ip6_config_merge_setting(priv->con_ip_config_6,
- s_ip6_new,
- nm_device_get_route_table(self, AF_INET6),
- nm_device_get_route_metric(self, AF_INET6));
-
- method_old = s_ip6_old ? nm_setting_ip_config_get_method(s_ip6_old)
- : NM_SETTING_IP6_CONFIG_METHOD_IGNORE;
- method_new = s_ip6_new ? nm_setting_ip_config_get_method(s_ip6_new)
- : NM_SETTING_IP6_CONFIG_METHOD_IGNORE;
-
- if (!nm_streq0(method_old, method_new)) {
- _cleanup_ip_pre(self, AF_INET6, CLEANUP_TYPE_DECONFIGURE);
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_WAIT);
- if (!nm_device_activate_stage3_ip6_start(self))
- _LOGW(LOGD_IP6, "Failed to apply IPv6 configuration");
- return;
- }
-
- if (s_ip6_old && s_ip6_new) {
- gint64 metric_old, metric_new;
-
- /* See comment in nm_device_reactivate_ip4_config() */
- metric_old = nm_setting_ip_config_get_route_metric(s_ip6_old);
- metric_new = nm_setting_ip_config_get_route_metric(s_ip6_new);
-
- if (metric_old != metric_new) {
+ } else {
if (priv->ac_ip6_config.orig) {
nm_ip6_config_update_routes_metric((NMIP6Config *) priv->ac_ip6_config.orig,
nm_device_get_route_metric(self, AF_INET6));
@@ -12459,9 +12358,12 @@ nm_device_reactivate_ip6_config(NMDevice * self,
}
}
}
+ }
- if (nm_device_get_ip_ifindex(self) > 0 && !ip_config_merge_and_apply(self, AF_INET6, TRUE))
- _LOGW(LOGD_IP4, "Failed to reapply IPv6 configuration");
+ if (nm_device_get_ip_ifindex(self) > 0 && !ip_config_merge_and_apply(self, addr_family, TRUE)) {
+ _LOGW(LOGD_IPX(IS_IPv4),
+ "Failed to reapply IPv%c configuration",
+ nm_utils_addr_family_to_char(addr_family));
}
}
@@ -12518,28 +12420,38 @@ can_reapply_change(NMDevice * self,
NM_SETTING_CONNECTION_LLDP,
NM_SETTING_CONNECTION_MDNS,
NM_SETTING_CONNECTION_LLMNR);
- } else if (NM_IN_STRSET(setting_name,
- NM_SETTING_USER_SETTING_NAME,
- NM_SETTING_PROXY_SETTING_NAME,
- NM_SETTING_IP4_CONFIG_SETTING_NAME,
- NM_SETTING_IP6_CONFIG_SETTING_NAME)) {
+ }
+
+ if (NM_IN_STRSET(setting_name,
+ NM_SETTING_USER_SETTING_NAME,
+ NM_SETTING_PROXY_SETTING_NAME,
+ NM_SETTING_IP4_CONFIG_SETTING_NAME,
+ NM_SETTING_IP6_CONFIG_SETTING_NAME))
return TRUE;
- } else if (nm_streq(setting_name, NM_SETTING_WIRED_SETTING_NAME)
- && NM_IN_SET(NM_DEVICE_GET_CLASS(self)->get_configured_mtu,
- nm_device_get_configured_mtu_wired_parent,
- nm_device_get_configured_mtu_for_wired)) {
- return nm_device_hash_check_invalid_keys(diffs,
- NM_SETTING_WIRED_SETTING_NAME,
- error,
- NM_SETTING_WIRED_MTU);
- } else {
- g_set_error(error,
- NM_DEVICE_ERROR,
- NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION,
- "Can't reapply any changes to '%s' setting",
- setting_name);
- return FALSE;
+
+ if (nm_streq(setting_name, NM_SETTING_WIRED_SETTING_NAME)) {
+ if (NM_IN_SET(NM_DEVICE_GET_CLASS(self)->get_configured_mtu,
+ nm_device_get_configured_mtu_wired_parent,
+ nm_device_get_configured_mtu_for_wired)) {
+ return nm_device_hash_check_invalid_keys(diffs,
+ NM_SETTING_WIRED_SETTING_NAME,
+ error,
+ NM_SETTING_WIRED_MTU);
+ }
+ goto out_fail;
}
+
+ if (nm_streq(setting_name, NM_SETTING_OVS_EXTERNAL_IDS_SETTING_NAME)
+ && NM_DEVICE_GET_CLASS(self)->can_reapply_change_ovs_external_ids)
+ return TRUE;
+
+out_fail:
+ g_set_error(error,
+ NM_DEVICE_ERROR,
+ NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION,
+ "Can't reapply any changes to '%s' setting",
+ setting_name);
+ return FALSE;
}
static void
@@ -12682,6 +12594,8 @@ check_and_reapply_connection(NMDevice * self,
con_old = applied_clone = nm_simple_connection_new_clone(applied);
con_new = applied;
+ /* FIXME(applied-connection-immutable): we should not modify the applied
+ * connection but replace it with a new (immutable) instance. */
nm_connection_replace_settings_from_connection(applied, connection_clean);
nm_connection_clear_secrets(applied);
} else
@@ -12716,8 +12630,8 @@ check_and_reapply_connection(NMDevice * self,
/* Allow reapply of MTU */
priv->mtu_source = NM_DEVICE_MTU_SOURCE_NONE;
- nm_device_reactivate_ip4_config(self, s_ip4_old, s_ip4_new);
- nm_device_reactivate_ip6_config(self, s_ip6_old, s_ip6_new);
+ nm_device_reactivate_ip_config(self, AF_INET, s_ip4_old, s_ip4_new);
+ nm_device_reactivate_ip_config(self, AF_INET6, s_ip6_old, s_ip6_new);
_routing_rules_sync(self, NM_TERNARY_TRUE);
@@ -13457,7 +13371,7 @@ nm_device_set_proxy_config(NMDevice *self, const char *pac_url)
NMDhcpConfig *
nm_device_get_dhcp_config(NMDevice *self, int addr_family)
{
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_val_if_fail(NM_IS_DEVICE(self), NULL);
@@ -13482,7 +13396,7 @@ nm_device_set_ip_config(NMDevice * self,
GPtrArray * ip4_dev_route_blacklist)
{
NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMIPConfig * old_config;
gboolean has_changes = FALSE;
gboolean success = TRUE;
@@ -13498,7 +13412,7 @@ nm_device_set_ip_config(NMDevice * self,
})));
nm_assert(IS_IPv4 || !ip4_dev_route_blacklist);
- _LOGD(LOGD_IP_from_af(addr_family),
+ _LOGD(LOGD_IPX(IS_IPv4),
"ip%c-config: update (commit=%d, new-config=%p)",
nm_utils_addr_family_to_char(addr_family),
commit,
@@ -13535,7 +13449,7 @@ nm_device_set_ip_config(NMDevice * self,
* this causes a re-read and reset. This should only happen for relevant changes */
nm_ip_config_replace(old_config, new_config, &has_changes);
if (has_changes) {
- _LOGD(LOGD_IP_from_af(addr_family),
+ _LOGD(LOGD_IPX(IS_IPv4),
"ip%c-config: update IP Config instance (%s)",
nm_utils_addr_family_to_char(addr_family),
nm_dbus_object_get_path(NM_DBUS_OBJECT(old_config)));
@@ -13546,14 +13460,14 @@ nm_device_set_ip_config(NMDevice * self,
if (!nm_dbus_object_is_exported(NM_DBUS_OBJECT(new_config)))
nm_dbus_object_export(NM_DBUS_OBJECT(new_config));
- _LOGD(LOGD_IP_from_af(addr_family),
+ _LOGD(LOGD_IPX(IS_IPv4),
"ip%c-config: set IP Config instance (%s)",
nm_utils_addr_family_to_char(addr_family),
nm_dbus_object_get_path(NM_DBUS_OBJECT(new_config)));
} else if (old_config /*&& !new_config*/) {
has_changes = TRUE;
priv->ip_config_x[IS_IPv4] = NULL;
- _LOGD(LOGD_IP_from_af(addr_family),
+ _LOGD(LOGD_IPX(IS_IPv4),
"ip%c-config: clear IP Config instance (%s)",
nm_utils_addr_family_to_char(addr_family),
nm_dbus_object_get_path(NM_DBUS_OBJECT(old_config)));
@@ -13671,7 +13585,7 @@ void
nm_device_set_dev2_ip_config(NMDevice *self, int addr_family, NMIPConfig *config)
{
NMDevicePrivate *priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_if_fail(NM_IS_DEVICE(self));
g_return_if_fail(NM_IN_SET(addr_family, AF_INET, AF_INET6));
@@ -14221,7 +14135,7 @@ update_ext_ip_config(NMDevice *self, int addr_family, gboolean intersect_configs
is_up = nm_platform_link_is_up(nm_device_get_platform(self), ifindex);
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
g_clear_object(&priv->ext_ip_config_4);
priv->ext_ip_config_4 = nm_ip4_config_capture(nm_device_get_multi_index(self),
nm_device_get_platform(self),
@@ -14270,7 +14184,7 @@ update_ext_ip_config(NMDevice *self, int addr_family, gboolean intersect_configs
}
} else {
- nm_assert(addr_family == AF_INET6);
+ nm_assert(!NM_IS_IPv4(addr_family));
g_clear_object(&priv->ext_ip_config_6);
g_clear_object(&priv->ext_ip6_config_captured);
@@ -14345,13 +14259,13 @@ update_ip_config(NMDevice *self, int addr_family)
nm_assert_addr_family(addr_family);
- if (addr_family == AF_INET)
+ if (NM_IS_IPv4(addr_family))
priv->update_ip_config_completed_v4 = TRUE;
else
priv->update_ip_config_completed_v6 = TRUE;
if (update_ext_ip_config(self, addr_family, TRUE)) {
- if (addr_family == AF_INET) {
+ if (NM_IS_IPv4(addr_family)) {
if (priv->ext_ip_config_4)
ip_config_merge_and_apply(self, AF_INET, FALSE);
} else {
@@ -14376,7 +14290,7 @@ static gboolean
queued_ip_config_change(NMDevice *self, int addr_family)
{
NMDevicePrivate *priv;
- const gboolean IS_IPv4 = (addr_family == AF_INET);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
g_return_val_if_fail(NM_IS_DEVICE(self), G_SOURCE_REMOVE);
@@ -14391,7 +14305,8 @@ queued_ip_config_change(NMDevice *self, int addr_family)
* update in such case.
*/
if (priv->activation_source_id_x[IS_IPv4] != 0
- && priv->activation_source_func_x[IS_IPv4] == activate_stage5_ip_config_result_x[IS_IPv4])
+ && priv->activation_source_func_x[IS_IPv4]
+ == activate_stage5_ip_config_result_x_fcn(addr_family))
return G_SOURCE_CONTINUE;
priv->queued_ip_config_id_x[IS_IPv4] = 0;
@@ -15740,6 +15655,7 @@ static void
_cleanup_generic_pre(NMDevice *self, CleanupType cleanup_type)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
+ guint i;
_cancel_activation(self);
@@ -15764,6 +15680,9 @@ _cleanup_generic_pre(NMDevice *self, CleanupType cleanup_type)
nm_clear_pointer(&priv->shared_ip_handle, nm_netns_shared_ip_release);
+ for (i = 0; i < 2; i++)
+ nm_clear_pointer(&priv->hostname_resolver_x[i], _hostname_resolver_free);
+
_cleanup_ip_pre(self, AF_INET, cleanup_type);
_cleanup_ip_pre(self, AF_INET6, cleanup_type);
}
@@ -17589,6 +17508,178 @@ nm_device_auth_retries_try_next(NMDevice *self)
return TRUE;
}
+static void
+hostname_dns_lookup_callback(GObject *source, GAsyncResult *result, gpointer user_data)
+{
+ HostnameResolver *resolver;
+ NMDevice * self;
+ gs_free char * hostname = NULL;
+ gs_free char * addr_str = NULL;
+ gs_free_error GError *error = NULL;
+
+ hostname = g_resolver_lookup_by_address_finish(G_RESOLVER(source), result, &error);
+ if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+
+ resolver = user_data;
+ self = resolver->device;
+ resolver->state = RESOLVER_DONE;
+ resolver->hostname = g_strdup(hostname);
+
+ _LOGD(LOGD_DNS,
+ "hostname-from-dns: lookup done for %s, result %s%s%s",
+ (addr_str = g_inet_address_to_string(resolver->address)),
+ NM_PRINT_FMT_QUOTE_STRING(hostname));
+
+ nm_clear_g_cancellable(&resolver->cancellable);
+ g_signal_emit(self, signals[DNS_LOOKUP_DONE], 0);
+}
+
+static gboolean
+hostname_dns_address_timeout(gpointer user_data)
+{
+ HostnameResolver *resolver = user_data;
+ NMDevice * self = resolver->device;
+
+ g_return_val_if_fail(NM_IS_DEVICE(self), G_SOURCE_REMOVE);
+
+ nm_assert(resolver->state == RESOLVER_WAIT_ADDRESS);
+ nm_assert(!resolver->address);
+ nm_assert(!resolver->cancellable);
+
+ _LOGT(LOGD_DNS,
+ "hostname-from-dns: timed out while waiting IPv%c address",
+ nm_utils_addr_family_to_char(resolver->addr_family));
+
+ resolver->timeout_id = 0;
+ resolver->state = RESOLVER_DONE;
+ g_signal_emit(self, signals[DNS_LOOKUP_DONE], 0);
+
+ return G_SOURCE_REMOVE;
+}
+
+/* return value is valid only immediately */
+const char *
+nm_device_get_hostname_from_dns_lookup(NMDevice *self, int addr_family, gboolean *out_wait)
+{
+ NMDevicePrivate * priv;
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ HostnameResolver *resolver;
+ NMIPConfig * ip_config;
+ const char * method;
+ gboolean address_changed = FALSE;
+ gs_unref_object GInetAddress *new_address = NULL;
+
+ g_return_val_if_fail(NM_IS_DEVICE(self), NULL);
+ priv = NM_DEVICE_GET_PRIVATE(self);
+
+ /* If the device is not supposed to have addresses,
+ * return an immediate empty result.*/
+ method = nm_device_get_effective_ip_config_method(self, addr_family);
+ if (IS_IPv4) {
+ if (NM_IN_STRSET(method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED)) {
+ nm_clear_pointer(&priv->hostname_resolver_x[IS_IPv4], _hostname_resolver_free);
+ NM_SET_OUT(out_wait, FALSE);
+ return NULL;
+ }
+ } else {
+ if (NM_IN_STRSET(method,
+ NM_SETTING_IP6_CONFIG_METHOD_DISABLED,
+ NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) {
+ nm_clear_pointer(&priv->hostname_resolver_x[IS_IPv4], _hostname_resolver_free);
+ NM_SET_OUT(out_wait, FALSE);
+ return NULL;
+ }
+ }
+
+ resolver = priv->hostname_resolver_x[IS_IPv4];
+ if (!resolver) {
+ resolver = g_slice_new(HostnameResolver);
+ *resolver = (HostnameResolver){
+ .resolver = g_resolver_get_default(),
+ .device = self,
+ .addr_family = addr_family,
+ .state = RESOLVER_WAIT_ADDRESS,
+ };
+ priv->hostname_resolver_x[IS_IPv4] = resolver;
+ }
+
+ /* Determine the first address of the interface and
+ * whether it changed from the previous lookup */
+ ip_config = priv->ip_config_x[IS_IPv4];
+ if (ip_config) {
+ const NMPlatformIPAddress *addr;
+
+ addr = nm_ip_config_get_first_address(ip_config);
+ if (addr) {
+ new_address = g_inet_address_new_from_bytes(addr->address_ptr,
+ IS_IPv4 ? G_SOCKET_FAMILY_IPV4
+ : G_SOCKET_FAMILY_IPV6);
+ }
+ }
+
+ if (new_address && resolver->address) {
+ if (!g_inet_address_equal(new_address, resolver->address))
+ address_changed = TRUE;
+ } else if (new_address != resolver->address)
+ address_changed = TRUE;
+
+ {
+ gs_free char *old_str = NULL;
+ gs_free char *new_str = NULL;
+
+ _LOGT(LOGD_DNS,
+ "hostname-from-dns: ipv%c resolver state %d, old address %s, new address %s",
+ nm_utils_addr_family_to_char(resolver->addr_family),
+ resolver->state,
+ resolver->address ? (old_str = g_inet_address_to_string(resolver->address))
+ : "(null)",
+ new_address ? (new_str = g_inet_address_to_string(new_address)) : "(null)");
+ }
+
+ /* In every state, if the address changed, we restart
+ * the resolution with the new address */
+ if (address_changed) {
+ nm_clear_g_cancellable(&resolver->cancellable);
+ nm_g_object_unref(resolver->address);
+ resolver->state = RESOLVER_WAIT_ADDRESS;
+ }
+
+ if (address_changed && new_address) {
+ gs_free char *str = NULL;
+
+ _LOGT(LOGD_DNS,
+ "hostname-from-dns: starting lookup for address %s",
+ (str = g_inet_address_to_string(new_address)));
+
+ resolver->state = RESOLVER_IN_PROGRESS;
+ resolver->cancellable = g_cancellable_new();
+ resolver->address = g_steal_pointer(&new_address);
+ g_resolver_lookup_by_address_async(resolver->resolver,
+ resolver->address,
+ resolver->cancellable,
+ hostname_dns_lookup_callback,
+ resolver);
+ nm_clear_g_source(&resolver->timeout_id);
+ }
+
+ switch (resolver->state) {
+ case RESOLVER_WAIT_ADDRESS:
+ if (!resolver->timeout_id)
+ resolver->timeout_id = g_timeout_add(30000, hostname_dns_address_timeout, resolver);
+ NM_SET_OUT(out_wait, TRUE);
+ return NULL;
+ case RESOLVER_IN_PROGRESS:
+ NM_SET_OUT(out_wait, TRUE);
+ return NULL;
+ case RESOLVER_DONE:
+ NM_SET_OUT(out_wait, FALSE);
+ return resolver->hostname;
+ }
+
+ return nm_assert_unreachable_val(NULL);
+}
+
/*****************************************************************************/
static const char *
@@ -18766,6 +18857,16 @@ nm_device_class_init(NMDeviceClass *klass)
NULL,
G_TYPE_NONE,
0);
+
+ signals[DNS_LOOKUP_DONE] = g_signal_new(NM_DEVICE_DNS_LOOKUP_DONE,
+ G_OBJECT_CLASS_TYPE(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 0);
}
/* Connection defaults from plugins */
diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h
index 3eae931834..2885bcbb80 100644
--- a/src/devices/nm-device.h
+++ b/src/devices/nm-device.h
@@ -116,6 +116,7 @@ nm_device_state_reason_check(NMDeviceStateReason reason)
#define NM_DEVICE_HAS_PENDING_ACTION "has-pending-action" /* Internal only */
/* Internal signals */
+#define NM_DEVICE_DNS_LOOKUP_DONE "dns-lookup-done"
#define NM_DEVICE_IP4_CONFIG_CHANGED "ip4-config-changed"
#define NM_DEVICE_IP6_CONFIG_CHANGED "ip6-config-changed"
#define NM_DEVICE_IP6_PREFIX_DELEGATED "ip6-prefix-delegated"
@@ -456,6 +457,8 @@ typedef struct _NMDeviceClass {
bool act_stage1_prepare_set_hwaddr_ethernet : 1;
+ bool can_reapply_change_ovs_external_ids : 1;
+
} NMDeviceClass;
GType nm_device_get_type(void);
@@ -800,12 +803,10 @@ void nm_device_reapply_settings_immediately(NMDevice *self);
void nm_device_update_firewall_zone(NMDevice *self);
void nm_device_update_metered(NMDevice *self);
-void nm_device_reactivate_ip4_config(NMDevice * device,
- NMSettingIPConfig *s_ip4_old,
- NMSettingIPConfig *s_ip4_new);
-void nm_device_reactivate_ip6_config(NMDevice * device,
- NMSettingIPConfig *s_ip6_old,
- NMSettingIPConfig *s_ip6_new);
+void nm_device_reactivate_ip_config(NMDevice * device,
+ int addr_family,
+ NMSettingIPConfig *s_ip_old,
+ NMSettingIPConfig *s_ip_new);
gboolean nm_device_update_hw_address(NMDevice *self);
void nm_device_update_initial_hw_address(NMDevice *self);
@@ -865,4 +866,7 @@ const char *nm_device_state_reason_to_str(NMDeviceStateReason reason);
gboolean nm_device_is_vpn(NMDevice *self);
+const char *
+nm_device_get_hostname_from_dns_lookup(NMDevice *self, int addr_family, gboolean *out_pending);
+
#endif /* __NETWORKMANAGER_DEVICE_H__ */
diff --git a/src/devices/nm-lldp-listener.c b/src/devices/nm-lldp-listener.c
index 25d863c869..6e57e09fa2 100644
--- a/src/devices/nm-lldp-listener.c
+++ b/src/devices/nm-lldp-listener.c
@@ -1075,7 +1075,7 @@ nm_lldp_listener_init(NMLldpListener *self)
NMLldpListener *
nm_lldp_listener_new(void)
{
- return (NMLldpListener *) g_object_new(NM_TYPE_LLDP_LISTENER, NULL);
+ return g_object_new(NM_TYPE_LLDP_LISTENER, NULL);
}
static void
diff --git a/src/devices/ovs/nm-device-ovs-bridge.c b/src/devices/ovs/nm-device-ovs-bridge.c
index a7b7a539e2..d3a41edde6 100644
--- a/src/devices/ovs/nm-device-ovs-bridge.c
+++ b/src/devices/ovs/nm-device-ovs-bridge.c
@@ -6,6 +6,8 @@
#include "nm-default.h"
#include "nm-device-ovs-bridge.h"
+
+#include "nm-device-ovs-interface.h"
#include "nm-device-ovs-port.h"
#include "nm-ovsdb.h"
@@ -13,9 +15,11 @@
#include "nm-active-connection.h"
#include "nm-setting-connection.h"
#include "nm-setting-ovs-bridge.h"
+#include "nm-setting-ovs-external-ids.h"
+#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceOvsBridge
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceOvsBridge);
/*****************************************************************************/
@@ -87,6 +91,39 @@ static void
release_slave(NMDevice *device, NMDevice *slave, gboolean configure)
{}
+void
+nm_device_ovs_reapply_connection(NMDevice *self, NMConnection *con_old, NMConnection *con_new)
+{
+ NMDeviceType device_type;
+ GType type;
+
+ nm_assert(NM_IS_DEVICE(self));
+ nm_assert(g_type_parent(G_TYPE_FROM_INSTANCE(self)) == NM_TYPE_DEVICE);
+
+ /* NMDevice's reapply_connection() doesn't do anything. No need to call the parent
+ * implementation. */
+
+ _LOGD(LOGD_DEVICE, "reapplying settings for OVS device");
+
+ type = G_OBJECT_TYPE(self);
+ if (type == NM_TYPE_DEVICE_OVS_INTERFACE)
+ device_type = NM_DEVICE_TYPE_OVS_INTERFACE;
+ else if (type == NM_TYPE_DEVICE_OVS_PORT)
+ device_type = NM_DEVICE_TYPE_OVS_PORT;
+ else {
+ nm_assert(type == NM_TYPE_DEVICE_OVS_BRIDGE);
+ device_type = NM_DEVICE_TYPE_OVS_BRIDGE;
+ }
+
+ nm_ovsdb_set_external_ids(
+ nm_ovsdb_get(),
+ device_type,
+ nm_device_get_ip_iface(self),
+ nm_connection_get_uuid(con_new),
+ _nm_connection_get_setting(con_old, NM_TYPE_SETTING_OVS_EXTERNAL_IDS),
+ _nm_connection_get_setting(con_new, NM_TYPE_SETTING_OVS_EXTERNAL_IDS));
+}
+
/*****************************************************************************/
static void
@@ -114,12 +151,14 @@ nm_device_ovs_bridge_class_init(NMDeviceOvsBridgeClass *klass)
device_class->connection_type_check_compatible = NM_SETTING_OVS_BRIDGE_SETTING_NAME;
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
- device_class->is_master = TRUE;
- device_class->get_type_description = get_type_description;
- device_class->create_and_realize = create_and_realize;
- device_class->unrealize = unrealize;
- device_class->get_generic_capabilities = get_generic_capabilities;
- device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
- device_class->enslave_slave = enslave_slave;
- device_class->release_slave = release_slave;
+ device_class->is_master = TRUE;
+ device_class->get_type_description = get_type_description;
+ device_class->create_and_realize = create_and_realize;
+ device_class->unrealize = unrealize;
+ device_class->get_generic_capabilities = get_generic_capabilities;
+ device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
+ device_class->enslave_slave = enslave_slave;
+ device_class->release_slave = release_slave;
+ device_class->can_reapply_change_ovs_external_ids = TRUE;
+ device_class->reapply_connection = nm_device_ovs_reapply_connection;
}
diff --git a/src/devices/ovs/nm-device-ovs-bridge.h b/src/devices/ovs/nm-device-ovs-bridge.h
index ba04bfebdd..304babdce1 100644
--- a/src/devices/ovs/nm-device-ovs-bridge.h
+++ b/src/devices/ovs/nm-device-ovs-bridge.h
@@ -22,4 +22,9 @@ typedef struct _NMDeviceOvsBridgeClass NMDeviceOvsBridgeClass;
GType nm_device_ovs_bridge_get_type(void);
+/*****************************************************************************/
+
+void
+nm_device_ovs_reapply_connection(NMDevice *device, NMConnection *con_old, NMConnection *con_new);
+
#endif /* __NETWORKMANAGER_DEVICE_OVS_BRIDGE_H__ */
diff --git a/src/devices/ovs/nm-device-ovs-interface.c b/src/devices/ovs/nm-device-ovs-interface.c
index 16b6e04da0..a438fa6345 100644
--- a/src/devices/ovs/nm-device-ovs-interface.c
+++ b/src/devices/ovs/nm-device-ovs-interface.c
@@ -6,6 +6,8 @@
#include "nm-default.h"
#include "nm-device-ovs-interface.h"
+
+#include "nm-device-ovs-bridge.h"
#include "nm-ovsdb.h"
#include "devices/nm-device-private.h"
@@ -14,8 +16,8 @@
#include "nm-setting-ovs-interface.h"
#include "nm-setting-ovs-port.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceOvsInterface
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceOvsInterface);
/*****************************************************************************/
@@ -382,17 +384,19 @@ nm_device_ovs_interface_class_init(NMDeviceOvsInterfaceClass *klass)
device_class->connection_type_check_compatible = NM_SETTING_OVS_INTERFACE_SETTING_NAME;
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_OPENVSWITCH);
- device_class->can_update_from_platform_link = can_update_from_platform_link;
- device_class->deactivate = deactivate;
- device_class->deactivate_async = deactivate_async;
- device_class->get_type_description = get_type_description;
- device_class->create_and_realize = create_and_realize;
- device_class->get_generic_capabilities = get_generic_capabilities;
- device_class->is_available = is_available;
- device_class->check_connection_compatible = check_connection_compatible;
- device_class->link_changed = link_changed;
- device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
- device_class->can_unmanaged_external_down = can_unmanaged_external_down;
- device_class->set_platform_mtu = set_platform_mtu;
- device_class->get_configured_mtu = nm_device_get_configured_mtu_for_wired;
+ device_class->can_update_from_platform_link = can_update_from_platform_link;
+ device_class->deactivate = deactivate;
+ device_class->deactivate_async = deactivate_async;
+ device_class->get_type_description = get_type_description;
+ device_class->create_and_realize = create_and_realize;
+ device_class->get_generic_capabilities = get_generic_capabilities;
+ device_class->is_available = is_available;
+ device_class->check_connection_compatible = check_connection_compatible;
+ device_class->link_changed = link_changed;
+ device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
+ device_class->can_unmanaged_external_down = can_unmanaged_external_down;
+ device_class->set_platform_mtu = set_platform_mtu;
+ device_class->get_configured_mtu = nm_device_get_configured_mtu_for_wired;
+ device_class->can_reapply_change_ovs_external_ids = TRUE;
+ device_class->reapply_connection = nm_device_ovs_reapply_connection;
}
diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c
index de98e29e06..d77b475a03 100644
--- a/src/devices/ovs/nm-device-ovs-port.c
+++ b/src/devices/ovs/nm-device-ovs-port.c
@@ -6,7 +6,9 @@
#include "nm-default.h"
#include "nm-device-ovs-port.h"
+
#include "nm-device-ovs-interface.h"
+#include "nm-device-ovs-bridge.h"
#include "nm-ovsdb.h"
#include "devices/nm-device-private.h"
@@ -15,8 +17,8 @@
#include "nm-setting-ovs-port.h"
#include "nm-setting-ovs-port.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceOvsPort
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceOvsPort);
/*****************************************************************************/
@@ -182,11 +184,13 @@ nm_device_ovs_port_class_init(NMDeviceOvsPortClass *klass)
device_class->connection_type_check_compatible = NM_SETTING_OVS_PORT_SETTING_NAME;
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
- device_class->is_master = TRUE;
- device_class->get_type_description = get_type_description;
- device_class->create_and_realize = create_and_realize;
- device_class->get_generic_capabilities = get_generic_capabilities;
- device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
- device_class->enslave_slave = enslave_slave;
- device_class->release_slave = release_slave;
+ device_class->is_master = TRUE;
+ device_class->get_type_description = get_type_description;
+ device_class->create_and_realize = create_and_realize;
+ device_class->get_generic_capabilities = get_generic_capabilities;
+ device_class->act_stage3_ip_config_start = act_stage3_ip_config_start;
+ device_class->enslave_slave = enslave_slave;
+ device_class->release_slave = release_slave;
+ device_class->can_reapply_change_ovs_external_ids = TRUE;
+ device_class->reapply_connection = nm_device_ovs_reapply_connection;
}
diff --git a/src/devices/ovs/nm-ovs-factory.c b/src/devices/ovs/nm-ovs-factory.c
index e1feacbd02..2a4667f074 100644
--- a/src/devices/ovs/nm-ovs-factory.c
+++ b/src/devices/ovs/nm-ovs-factory.c
@@ -64,7 +64,7 @@ G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
nm_manager_set_capability(NM_MANAGER_GET, NM_CAPABILITY_OVS);
- return (NMDeviceFactory *) g_object_new(NM_TYPE_OVS_FACTORY, NULL);
+ return g_object_new(NM_TYPE_OVS_FACTORY, NULL);
}
static NMDevice *
@@ -106,12 +106,10 @@ new_device_from_type(const char *name, NMDeviceType device_type)
}
static void
-ovsdb_device_added(NMOvsdb * ovsdb,
- const char * name,
- NMDeviceType device_type,
- NMDeviceFactory *self)
+ovsdb_device_added(NMOvsdb *ovsdb, const char *name, guint device_type_i, NMDeviceFactory *self)
{
- NMDevice *device = NULL;
+ const NMDeviceType device_type = device_type_i;
+ NMDevice * device;
device = new_device_from_type(name, device_type);
if (!device)
@@ -122,13 +120,11 @@ ovsdb_device_added(NMOvsdb * ovsdb,
}
static void
-ovsdb_device_removed(NMOvsdb * ovsdb,
- const char * name,
- NMDeviceType device_type,
- NMDeviceFactory *self)
+ovsdb_device_removed(NMOvsdb *ovsdb, const char *name, guint device_type_i, NMDeviceFactory *self)
{
- NMDevice * device;
- NMDeviceState device_state;
+ const NMDeviceType device_type = device_type_i;
+ NMDevice * device;
+ NMDeviceState device_state;
device = nm_manager_get_device(NM_MANAGER_GET, name, device_type);
if (!device)
diff --git a/src/devices/ovs/nm-ovsdb.c b/src/devices/ovs/nm-ovsdb.c
index 27ef789f77..08bf573880 100644
--- a/src/devices/ovs/nm-ovsdb.c
+++ b/src/devices/ovs/nm-ovsdb.c
@@ -11,9 +11,15 @@
#include <gio/gunixsocketaddress.h>
#include "nm-glib-aux/nm-jansson.h"
+#include "nm-glib-aux/nm-str-buf.h"
#include "nm-core-utils.h"
#include "nm-core-internal.h"
#include "devices/nm-device.h"
+#include "nm-setting-ovs-external-ids.h"
+
+/*****************************************************************************/
+
+#define OVSDB_MAX_FAILURES 3
/*****************************************************************************/
@@ -22,25 +28,84 @@
#endif
typedef struct {
+ char * port_uuid;
char * name;
char * connection_uuid;
GPtrArray *interfaces; /* interface uuids */
+ GArray * external_ids;
} OpenvswitchPort;
typedef struct {
+ char * bridge_uuid;
char * name;
char * connection_uuid;
GPtrArray *ports; /* port uuids */
+ GArray * external_ids;
} OpenvswitchBridge;
typedef struct {
- char *name;
- char *type;
- char *connection_uuid;
+ char * interface_uuid;
+ char * name;
+ char * type;
+ char * connection_uuid;
+ GArray *external_ids;
} OpenvswitchInterface;
/*****************************************************************************/
+typedef void (*OvsdbMethodCallback)(NMOvsdb *self,
+ json_t * response,
+ GError * error,
+ gpointer user_data);
+
+typedef enum {
+ OVSDB_MONITOR,
+ OVSDB_ADD_INTERFACE,
+ OVSDB_DEL_INTERFACE,
+ OVSDB_SET_INTERFACE_MTU,
+ OVSDB_SET_EXTERNAL_IDS,
+} OvsdbCommand;
+
+#define CALL_ID_UNSPEC G_MAXUINT64
+
+typedef union {
+ struct {
+ } monitor;
+ struct {
+ NMConnection *bridge;
+ NMConnection *port;
+ NMConnection *interface;
+ NMDevice * bridge_device;
+ NMDevice * interface_device;
+ } add_interface;
+ struct {
+ char *ifname;
+ } del_interface;
+ struct {
+ char * ifname;
+ guint32 mtu;
+ } set_interface_mtu;
+ struct {
+ NMDeviceType device_type;
+ char * ifname;
+ char * connection_uuid;
+ GHashTable * exid_old;
+ GHashTable * exid_new;
+ } set_external_ids;
+} OvsdbMethodPayload;
+
+typedef struct {
+ NMOvsdb * self;
+ CList calls_lst;
+ guint64 call_id;
+ OvsdbCommand command;
+ OvsdbMethodCallback callback;
+ gpointer user_data;
+ OvsdbMethodPayload payload;
+} OvsdbMethodCall;
+
+/*****************************************************************************/
+
enum { DEVICE_ADDED, DEVICE_REMOVED, INTERFACE_FAILED, LAST_SIGNAL };
static guint signals[LAST_SIGNAL] = {0};
@@ -53,13 +118,15 @@ typedef struct {
size_t bufp; /* Last decoded byte in the input buffer. */
GString * input; /* JSON stream waiting for decoding. */
GString * output; /* JSON stream to be sent. */
- gint64 seq;
- GArray * calls; /* Method calls waiting for a response. */
- GHashTable * interfaces; /* interface uuid => OpenvswitchInterface */
- GHashTable * ports; /* port uuid => OpenvswitchPort */
- GHashTable * bridges; /* bridge uuid => OpenvswitchBridge */
- char * db_uuid;
- guint num_failures;
+ guint64 call_id_counter;
+
+ CList calls_lst_head;
+
+ GHashTable *interfaces; /* interface uuid => OpenvswitchInterface */
+ GHashTable *ports; /* port uuid => OpenvswitchPort */
+ GHashTable *bridges; /* bridge uuid => OpenvswitchBridge */
+ char * db_uuid;
+ guint num_failures;
} NMOvsdbPrivate;
struct _NMOvsdb {
@@ -75,9 +142,6 @@ G_DEFINE_TYPE(NMOvsdb, nm_ovsdb, G_TYPE_OBJECT)
#define NM_OVSDB_GET_PRIVATE(self) _NM_GET_PRIVATE(self, NMOvsdb, NM_IS_OVSDB)
-#define _NMLOG_DOMAIN LOGD_DEVICE
-#define _NMLOG(level, ...) __NMLOG_DEFAULT(level, _NMLOG_DOMAIN, "ovsdb", __VA_ARGS__)
-
NM_DEFINE_SINGLETON_GETTER(NMOvsdb, nm_ovsdb_get, NM_TYPE_OVSDB);
/*****************************************************************************/
@@ -90,89 +154,200 @@ static void ovsdb_next_command(NMOvsdb *self);
/*****************************************************************************/
-/* ovsdb command abstraction. */
+#define _NMLOG_DOMAIN LOGD_DEVICE
+#define _NMLOG(level, ...) __NMLOG_DEFAULT(level, _NMLOG_DOMAIN, "ovsdb", __VA_ARGS__)
-typedef void (*OvsdbMethodCallback)(NMOvsdb *self,
- json_t * response,
- GError * error,
- gpointer user_data);
+#define _NMLOG_call(level, call, ...) \
+ _NMLOG((level), \
+ "call[" NM_HASH_OBFUSCATE_PTR_FMT "]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+ NM_HASH_OBFUSCATE_PTR((call)) _NM_UTILS_MACRO_REST(__VA_ARGS__))
-typedef enum {
- OVSDB_MONITOR,
- OVSDB_ADD_INTERFACE,
- OVSDB_DEL_INTERFACE,
- OVSDB_SET_INTERFACE_MTU,
-} OvsdbCommand;
+#define _LOGT_call(call, ...) _NMLOG_call(LOGL_TRACE, (call), __VA_ARGS__)
-typedef struct {
- gint64 id;
-#define COMMAND_PENDING -1 /* id not yet assigned */
- OvsdbCommand command;
- OvsdbMethodCallback callback;
- gpointer user_data;
- union {
- struct {
- char * ifname;
- guint32 mtu;
- };
- struct {
- NMConnection *bridge;
- NMConnection *port;
- NMConnection *interface;
- NMDevice * bridge_device;
- NMDevice * interface_device;
- };
- };
-} OvsdbMethodCall;
+/*****************************************************************************/
-#define OVSDB_MAX_FAILURES 3
+#define OVSDB_METHOD_PAYLOAD_MONITOR() \
+ (&((const OvsdbMethodPayload){ \
+ .monitor = {}, \
+ }))
+
+#define OVSDB_METHOD_PAYLOAD_ADD_INTERFACE(xbridge, \
+ xport, \
+ xinterface, \
+ xbridge_device, \
+ xinterface_device) \
+ (&((const OvsdbMethodPayload){ \
+ .add_interface = \
+ { \
+ .bridge = (xbridge), \
+ .port = (xport), \
+ .interface = (xinterface), \
+ .bridge_device = (xbridge_device), \
+ .interface_device = (xinterface_device), \
+ }, \
+ }))
+
+#define OVSDB_METHOD_PAYLOAD_DEL_INTERFACE(xifname) \
+ (&((const OvsdbMethodPayload){ \
+ .del_interface = \
+ { \
+ .ifname = (char *) NM_CONSTCAST(char, (xifname)), \
+ }, \
+ }))
+
+#define OVSDB_METHOD_PAYLOAD_SET_INTERFACE_MTU(xifname, xmtu) \
+ (&((const OvsdbMethodPayload){ \
+ .set_interface_mtu = \
+ { \
+ .ifname = (char *) NM_CONSTCAST(char, (xifname)), \
+ .mtu = (xmtu), \
+ }, \
+ }))
+
+#define OVSDB_METHOD_PAYLOAD_SET_EXTERNAL_IDS(xdevice_type, \
+ xifname, \
+ xconnection_uuid, \
+ xexid_old, \
+ xexid_new) \
+ (&((const OvsdbMethodPayload){ \
+ .set_external_ids = \
+ { \
+ .device_type = xdevice_type, \
+ .ifname = (char *) NM_CONSTCAST(char, (xifname)), \
+ .connection_uuid = (char *) NM_CONSTCAST(char, (xconnection_uuid)), \
+ .exid_old = (xexid_old), \
+ .exid_new = (xexid_new), \
+ }, \
+ }))
+
+/*****************************************************************************/
+
+static NM_UTILS_LOOKUP_STR_DEFINE(_device_type_to_table,
+ NMDeviceType,
+ NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(NULL),
+ NM_UTILS_LOOKUP_STR_ITEM(NM_DEVICE_TYPE_OVS_BRIDGE, "Bridge"),
+ NM_UTILS_LOOKUP_STR_ITEM(NM_DEVICE_TYPE_OVS_PORT, "Port"),
+ NM_UTILS_LOOKUP_STR_ITEM(NM_DEVICE_TYPE_OVS_INTERFACE,
+ "Interface"),
+ NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER(), );
+
+/*****************************************************************************/
static void
-_LOGT_call_do(const char *comment, OvsdbMethodCall *call, json_t *msg)
+_call_complete(OvsdbMethodCall *call, json_t *response, GError *error)
{
- gs_free char *str = NULL;
+ if (response) {
+ gs_free char *str = NULL;
+
+ str = json_dumps(response, 0);
+ if (error)
+ _LOGT_call(call, "completed: %s ; error: %s", str, error->message);
+ else
+ _LOGT_call(call, "completed: %s", str);
+ } else {
+ nm_assert(error);
+ _LOGT_call(call, "completed: error: %s", error->message);
+ }
- if (msg)
- str = json_dumps(msg, 0);
+ c_list_unlink_stale(&call->calls_lst);
+
+ if (call->callback)
+ call->callback(call->self, response, error, call->user_data);
switch (call->command) {
case OVSDB_MONITOR:
- _LOGT("%s: monitor%s%s", comment, msg ? ": " : "", msg ? str : "");
break;
case OVSDB_ADD_INTERFACE:
- _LOGT("%s: add-iface bridge=%s port=%s interface=%s%s%s",
- comment,
- nm_connection_get_interface_name(call->bridge),
- nm_connection_get_interface_name(call->port),
- nm_connection_get_interface_name(call->interface),
- msg ? ": " : "",
- msg ? str : "");
+ g_clear_object(&call->payload.add_interface.bridge);
+ g_clear_object(&call->payload.add_interface.port);
+ g_clear_object(&call->payload.add_interface.interface);
+ g_clear_object(&call->payload.add_interface.bridge_device);
+ g_clear_object(&call->payload.add_interface.interface_device);
break;
case OVSDB_DEL_INTERFACE:
- _LOGT("%s: del-iface interface=%s%s%s",
- comment,
- call->ifname,
- msg ? ": " : "",
- msg ? str : "");
+ nm_clear_g_free(&call->payload.del_interface.ifname);
break;
case OVSDB_SET_INTERFACE_MTU:
- _LOGT("%s: set-iface-mtu interface=%s%s%s mtu=%u",
- comment,
- call->ifname,
- msg ? ": " : "",
- msg ? str : "",
- call->mtu);
+ nm_clear_g_free(&call->payload.set_interface_mtu.ifname);
+ break;
+ case OVSDB_SET_EXTERNAL_IDS:
+ nm_clear_g_free(&call->payload.set_external_ids.ifname);
+ nm_clear_g_free(&call->payload.set_external_ids.connection_uuid);
+ nm_clear_pointer(&call->payload.set_external_ids.exid_old, g_hash_table_destroy);
+ nm_clear_pointer(&call->payload.set_external_ids.exid_new, g_hash_table_destroy);
break;
}
+
+ nm_g_slice_free(call);
}
-#define _LOGT_call(comment, call, message) \
- G_STMT_START \
- { \
- if (_LOGT_ENABLED()) \
- _LOGT_call_do((comment), (call), (message)); \
- } \
- G_STMT_END
+/*****************************************************************************/
+
+static void
+_free_bridge(OpenvswitchBridge *ovs_bridge)
+{
+ g_free(ovs_bridge->bridge_uuid);
+ g_free(ovs_bridge->name);
+ g_free(ovs_bridge->connection_uuid);
+ g_ptr_array_free(ovs_bridge->ports, TRUE);
+ nm_g_array_unref(ovs_bridge->external_ids);
+ nm_g_slice_free(ovs_bridge);
+}
+
+static void
+_free_port(OpenvswitchPort *ovs_port)
+{
+ g_free(ovs_port->port_uuid);
+ g_free(ovs_port->name);
+ g_free(ovs_port->connection_uuid);
+ g_ptr_array_free(ovs_port->interfaces, TRUE);
+ nm_g_array_unref(ovs_port->external_ids);
+ nm_g_slice_free(ovs_port);
+}
+
+static void
+_free_interface(OpenvswitchInterface *ovs_interface)
+{
+ g_free(ovs_interface->interface_uuid);
+ g_free(ovs_interface->name);
+ g_free(ovs_interface->connection_uuid);
+ g_free(ovs_interface->type);
+ nm_g_array_unref(ovs_interface->external_ids);
+ nm_g_slice_free(ovs_interface);
+}
+
+static gboolean
+_openvswitch_interface_should_emit_signal(const OpenvswitchInterface *ovs_interface)
+{
+ /* Currently, the factory only creates NMDevices for
+ * internal interfaces. We ignore the rest. */
+ return nm_streq0(ovs_interface->type, "internal");
+}
+
+/*****************************************************************************/
+
+static void
+_signal_emit_device_added(NMOvsdb *self, const char *name, NMDeviceType device_type)
+{
+ g_signal_emit(self, signals[DEVICE_ADDED], 0, name, (guint) device_type);
+}
+
+static void
+_signal_emit_device_removed(NMOvsdb *self, const char *name, NMDeviceType device_type)
+{
+ g_signal_emit(self, signals[DEVICE_REMOVED], 0, name, (guint) device_type);
+}
+
+static void
+_signal_emit_interface_failed(NMOvsdb * self,
+ const char *name,
+ const char *connection_uuid,
+ const char *error)
+{
+ g_signal_emit(self, signals[INTERFACE_FAILED], 0, name, connection_uuid, error);
+}
+
+/*****************************************************************************/
/**
* ovsdb_call_method:
@@ -181,18 +356,12 @@ _LOGT_call_do(const char *comment, OvsdbMethodCall *call, json_t *msg)
* there's no command pending completion.
*/
static void
-ovsdb_call_method(NMOvsdb * self,
- OvsdbCommand command,
- const char * ifname,
- NMConnection * bridge,
- NMConnection * port,
- NMConnection * interface,
- NMDevice * bridge_device,
- NMDevice * interface_device,
- guint32 mtu,
- OvsdbMethodCallback callback,
- gpointer user_data,
- gboolean add_first)
+ovsdb_call_method(NMOvsdb * self,
+ OvsdbMethodCallback callback,
+ gpointer user_data,
+ gboolean add_first,
+ OvsdbCommand command,
+ const OvsdbMethodPayload *payload)
{
NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
OvsdbMethodCall *call;
@@ -200,39 +369,76 @@ ovsdb_call_method(NMOvsdb * self,
/* Ensure we're not unsynchronized before we queue the method call. */
ovsdb_try_connect(self);
- if (add_first) {
- g_array_prepend_val(priv->calls, (OvsdbMethodCall){});
- call = &g_array_index(priv->calls, OvsdbMethodCall, 0);
- } else {
- g_array_set_size(priv->calls, priv->calls->len + 1);
- call = &g_array_index(priv->calls, OvsdbMethodCall, priv->calls->len - 1);
- }
- call->id = COMMAND_PENDING;
- call->command = command;
- call->callback = callback;
- call->user_data = user_data;
+ call = g_slice_new(OvsdbMethodCall);
+ *call = (OvsdbMethodCall){
+ .self = self,
+ .call_id = CALL_ID_UNSPEC,
+ .command = command,
+ .callback = callback,
+ .user_data = user_data,
+ };
- switch (call->command) {
+ if (add_first)
+ c_list_link_front(&priv->calls_lst_head, &call->calls_lst);
+ else
+ c_list_link_tail(&priv->calls_lst_head, &call->calls_lst);
+
+ /* Migrate the arguments from @payload to @call->payload. Technically,
+ * this is not a plain copy, because
+ * - call->payload is not initialized (thus no need to free the previous data).
+ * - payload does not own the data. It is merely initialized using the
+ * OVSDB_METHOD_PAYLOAD_*() macros. */
+ switch (command) {
case OVSDB_MONITOR:
+ _LOGT_call(call, "new: monitor");
break;
case OVSDB_ADD_INTERFACE:
- call->bridge = nm_simple_connection_new_clone(bridge);
- call->port = nm_simple_connection_new_clone(port);
- call->interface = nm_simple_connection_new_clone(interface);
- call->bridge_device = g_object_ref(bridge_device);
- call->interface_device = g_object_ref(interface_device);
+ /* FIXME(applied-connection-immutable): we should not modify the applied
+ * connection, consequently there is no need to clone the connections. */
+ call->payload.add_interface.bridge =
+ nm_simple_connection_new_clone(payload->add_interface.bridge);
+ call->payload.add_interface.port =
+ nm_simple_connection_new_clone(payload->add_interface.port);
+ call->payload.add_interface.interface =
+ nm_simple_connection_new_clone(payload->add_interface.interface);
+ call->payload.add_interface.bridge_device =
+ g_object_ref(payload->add_interface.bridge_device);
+ call->payload.add_interface.interface_device =
+ g_object_ref(payload->add_interface.interface_device);
+ _LOGT_call(call,
+ "new: add-interface bridge=%s port=%s interface=%s",
+ nm_connection_get_interface_name(call->payload.add_interface.bridge),
+ nm_connection_get_interface_name(call->payload.add_interface.port),
+ nm_connection_get_interface_name(call->payload.add_interface.interface));
break;
case OVSDB_DEL_INTERFACE:
- call->ifname = g_strdup(ifname);
+ call->payload.del_interface.ifname = g_strdup(payload->del_interface.ifname);
+ _LOGT_call(call, "new: del-interface interface=%s", call->payload.del_interface.ifname);
break;
case OVSDB_SET_INTERFACE_MTU:
- call->ifname = g_strdup(ifname);
- call->mtu = mtu;
+ call->payload.set_interface_mtu.ifname = g_strdup(payload->set_interface_mtu.ifname);
+ call->payload.set_interface_mtu.mtu = payload->set_interface_mtu.mtu;
+ _LOGT_call(call,
+ "new: set-interface-mtu interface=%s mtu=%u",
+ call->payload.set_interface_mtu.ifname,
+ call->payload.set_interface_mtu.mtu);
+ break;
+ case OVSDB_SET_EXTERNAL_IDS:
+ call->payload.set_external_ids.device_type = payload->set_external_ids.device_type;
+ call->payload.set_external_ids.ifname = g_strdup(payload->set_external_ids.ifname);
+ call->payload.set_external_ids.connection_uuid =
+ g_strdup(payload->set_external_ids.connection_uuid);
+ call->payload.set_external_ids.exid_old =
+ nm_g_hash_table_ref(payload->set_external_ids.exid_old);
+ call->payload.set_external_ids.exid_new =
+ nm_g_hash_table_ref(payload->set_external_ids.exid_new);
+ _LOGT_call(call,
+ "new: set-external-ids con-uuid=%s, interface=%s",
+ call->payload.set_external_ids.connection_uuid,
+ call->payload.set_external_ids.ifname);
break;
}
- _LOGT_call("enqueue", call, NULL);
-
ovsdb_next_command(self);
}
@@ -437,6 +643,94 @@ _set_port_interfaces(json_t *params, const char *ifname, json_t *new_interfaces)
ifname));
}
+static json_t *
+_j_create_external_ids_array_new(NMConnection *connection)
+{
+ json_t * array;
+ const char *const * external_ids = NULL;
+ guint n_external_ids = 0;
+ guint i;
+ const char * uuid;
+ NMSettingOvsExternalIDs *s_exid;
+
+ nm_assert(NM_IS_CONNECTION(connection));
+
+ array = json_array();
+
+ uuid = nm_connection_get_uuid(connection);
+ nm_assert(uuid);
+ json_array_append_new(array, json_pack("[s, s]", NM_OVS_EXTERNAL_ID_NM_CONNECTION_UUID, uuid));
+
+ s_exid = _nm_connection_get_setting(connection, NM_TYPE_SETTING_OVS_EXTERNAL_IDS);
+ if (s_exid)
+ external_ids = nm_setting_ovs_external_ids_get_data_keys(s_exid, &n_external_ids);
+ for (i = 0; i < n_external_ids; i++) {
+ const char *k = external_ids[i];
+
+ json_array_append_new(
+ array,
+ json_pack("[s, s]", k, nm_setting_ovs_external_ids_get_data(s_exid, k)));
+ }
+
+ return json_pack("[s, o]", "map", array);
+}
+
+static json_t *
+_j_create_external_ids_array_update(const char *connection_uuid,
+ GHashTable *exid_old,
+ GHashTable *exid_new)
+{
+ GHashTableIter iter;
+ json_t * mutations;
+ json_t * array;
+ const char * key;
+ const char * val;
+
+ nm_assert(connection_uuid);
+
+ mutations = json_array();
+
+ if (exid_old) {
+ array = NULL;
+ g_hash_table_iter_init(&iter, exid_old);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, NULL)) {
+ if (nm_g_hash_table_contains(exid_new, key))
+ continue;
+ if (NM_STR_HAS_PREFIX(key, NM_OVS_EXTERNAL_ID_NM_PREFIX))
+ continue;
+
+ if (!array)
+ array = json_array();
+
+ json_array_append_new(array, json_string(key));
+ }
+ if (array) {
+ json_array_append_new(
+ mutations,
+ json_pack("[s, s, [s, o]]", "external_ids", "delete", "set", array));
+ }
+ }
+
+ array = json_array();
+
+ json_array_append_new(
+ array,
+ json_pack("[s, s]", NM_OVS_EXTERNAL_ID_NM_CONNECTION_UUID, connection_uuid));
+
+ if (exid_new) {
+ g_hash_table_iter_init(&iter, exid_new);
+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, (gpointer *) &val)) {
+ if (NM_STR_HAS_PREFIX(key, NM_OVS_EXTERNAL_ID_NM_PREFIX))
+ continue;
+ json_array_append_new(array, json_pack("[s, s]", key, val));
+ }
+ }
+
+ json_array_append_new(mutations,
+ json_pack("[s, s, [s, o]]", "external_ids", "insert", "map", array));
+ return mutations;
+}
+
/**
* _insert_interface:
*
@@ -487,7 +781,7 @@ _insert_interface(json_t * params,
json_array_append_new(options, json_array());
}
- row = json_pack("{s:s, s:s, s:o, s:[s, [[s, s]]]}",
+ row = json_pack("{s:s, s:s, s:o, s:o}",
"name",
nm_connection_get_interface_name(interface),
"type",
@@ -495,9 +789,7 @@ _insert_interface(json_t * params,
"options",
options,
"external_ids",
- "map",
- "NM.connection.uuid",
- nm_connection_get_uuid(interface));
+ _j_create_external_ids_array_new(interface));
if (cloned_mac)
json_object_set_new(row, "mac", json_string(cloned_mac));
@@ -562,10 +854,7 @@ _insert_port(json_t *params, NMConnection *port, json_t *new_interfaces)
json_object_set_new(row, "name", json_string(nm_connection_get_interface_name(port)));
json_object_set_new(row, "interfaces", json_pack("[s, O]", "set", new_interfaces));
- json_object_set_new(
- row,
- "external_ids",
- json_pack("[s, [[s, s]]]", "map", "NM.connection.uuid", nm_connection_get_uuid(port)));
+ json_object_set_new(row, "external_ids", _j_create_external_ids_array_new(port));
/* Create a new one. */
json_array_append_new(params,
@@ -625,10 +914,7 @@ _insert_bridge(json_t * params,
json_object_set_new(row, "name", json_string(nm_connection_get_interface_name(bridge)));
json_object_set_new(row, "ports", json_pack("[s, O]", "set", new_ports));
- json_object_set_new(
- row,
- "external_ids",
- json_pack("[s, [[s, s]]]", "map", "NM.connection.uuid", nm_connection_get_uuid(bridge)));
+ json_object_set_new(row, "external_ids", _j_create_external_ids_array_new(bridge));
if (cloned_mac) {
json_object_set_new(row,
@@ -691,7 +977,6 @@ _add_interface(NMOvsdb * self,
{
NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
GHashTableIter iter;
- const char * bridge_uuid;
const char * port_uuid;
const char * interface_uuid;
const char * bridge_name;
@@ -777,43 +1062,43 @@ _add_interface(NMOvsdb * self,
}
g_hash_table_iter_init(&iter, priv->bridges);
- while (g_hash_table_iter_next(&iter, (gpointer) &bridge_uuid, (gpointer) &ovs_bridge)) {
- json_array_append_new(bridges, json_pack("[s, s]", "uuid", bridge_uuid));
+ while (g_hash_table_iter_next(&iter, (gpointer) &ovs_bridge, NULL)) {
+ json_array_append_new(bridges, json_pack("[s, s]", "uuid", ovs_bridge->bridge_uuid));
- if (g_strcmp0(ovs_bridge->name, bridge_name) != 0
- || g_strcmp0(ovs_bridge->connection_uuid, nm_connection_get_uuid(bridge)) != 0)
+ if (!nm_streq0(ovs_bridge->name, bridge_name)
+ || !nm_streq0(ovs_bridge->connection_uuid, nm_connection_get_uuid(bridge)))
continue;
for (pi = 0; pi < ovs_bridge->ports->len; pi++) {
port_uuid = g_ptr_array_index(ovs_bridge->ports, pi);
- ovs_port = g_hash_table_lookup(priv->ports, port_uuid);
+ ovs_port = g_hash_table_lookup(priv->ports, &port_uuid);
json_array_append_new(ports, json_pack("[s, s]", "uuid", port_uuid));
if (!ovs_port) {
/* This would be a violation of ovsdb's reference integrity (a bug). */
- _LOGW("Unknown port '%s' in bridge '%s'", port_uuid, bridge_uuid);
- continue;
- } else if (strcmp(ovs_port->name, port_name) != 0
- || g_strcmp0(ovs_port->connection_uuid, nm_connection_get_uuid(port)) != 0) {
+ _LOGW("Unknown port '%s' in bridge '%s'", port_uuid, ovs_bridge->bridge_uuid);
continue;
}
+ if (!nm_streq(ovs_port->name, port_name)
+ || !nm_streq0(ovs_port->connection_uuid, nm_connection_get_uuid(port)))
+ continue;
+
for (ii = 0; ii < ovs_port->interfaces->len; ii++) {
interface_uuid = g_ptr_array_index(ovs_port->interfaces, ii);
- ovs_interface = g_hash_table_lookup(priv->interfaces, interface_uuid);
+ ovs_interface = g_hash_table_lookup(priv->interfaces, &interface_uuid);
json_array_append_new(interfaces, json_pack("[s, s]", "uuid", interface_uuid));
if (!ovs_interface) {
/* This would be a violation of ovsdb's reference integrity (a bug). */
_LOGW("Unknown interface '%s' in port '%s'", interface_uuid, port_uuid);
- } else if (strcmp(ovs_interface->name, interface_name) == 0
- && g_strcmp0(ovs_interface->connection_uuid,
- nm_connection_get_uuid(interface))
- == 0) {
- has_interface = TRUE;
+ continue;
}
+ if (nm_streq(ovs_interface->name, interface_name)
+ && nm_streq0(ovs_interface->connection_uuid, nm_connection_get_uuid(interface)))
+ has_interface = TRUE;
}
break;
@@ -869,7 +1154,6 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
{
NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
GHashTableIter iter;
- char * bridge_uuid;
char * port_uuid;
char * interface_uuid;
OpenvswitchBridge * ovs_bridge;
@@ -888,7 +1172,7 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
bridges_changed = FALSE;
g_hash_table_iter_init(&iter, priv->bridges);
- while (g_hash_table_iter_next(&iter, (gpointer) &bridge_uuid, (gpointer) &ovs_bridge)) {
+ while (g_hash_table_iter_next(&iter, (gpointer) &ovs_bridge, NULL)) {
nm_auto_decref_json json_t *ports = NULL;
nm_auto_decref_json json_t *new_ports = NULL;
@@ -896,7 +1180,7 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
new_ports = json_array();
ports_changed = FALSE;
- json_array_append_new(bridges, json_pack("[s,s]", "uuid", bridge_uuid));
+ json_array_append_new(bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
for (pi = 0; pi < ovs_bridge->ports->len; pi++) {
nm_auto_decref_json json_t *interfaces = NULL;
@@ -905,7 +1189,7 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
interfaces = json_array();
new_interfaces = json_array();
port_uuid = g_ptr_array_index(ovs_bridge->ports, pi);
- ovs_port = g_hash_table_lookup(priv->ports, port_uuid);
+ ovs_port = g_hash_table_lookup(priv->ports, &port_uuid);
json_array_append_new(ports, json_pack("[s,s]", "uuid", port_uuid));
@@ -913,18 +1197,18 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
if (!ovs_port) {
/* This would be a violation of ovsdb's reference integrity (a bug). */
- _LOGW("Unknown port '%s' in bridge '%s'", port_uuid, bridge_uuid);
+ _LOGW("Unknown port '%s' in bridge '%s'", port_uuid, ovs_bridge->bridge_uuid);
continue;
}
for (ii = 0; ii < ovs_port->interfaces->len; ii++) {
interface_uuid = g_ptr_array_index(ovs_port->interfaces, ii);
- ovs_interface = g_hash_table_lookup(priv->interfaces, interface_uuid);
+ ovs_interface = g_hash_table_lookup(priv->interfaces, &interface_uuid);
json_array_append_new(interfaces, json_pack("[s,s]", "uuid", interface_uuid));
if (ovs_interface) {
- if (strcmp(ovs_interface->name, ifname) == 0) {
+ if (nm_streq(ovs_interface->name, ifname)) {
/* skip the interface */
interfaces_changed = TRUE;
continue;
@@ -955,7 +1239,7 @@ _delete_interface(NMOvsdb *self, json_t *params, const char *ifname)
_expect_bridge_ports(params, ovs_bridge->name, ports);
_set_bridge_ports(params, ovs_bridge->name, new_ports);
}
- json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", bridge_uuid));
+ json_array_append_new(new_bridges, json_pack("[s,s]", "uuid", ovs_bridge->bridge_uuid));
}
}
@@ -979,30 +1263,32 @@ static void
ovsdb_next_command(NMOvsdb *self)
{
NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
- OvsdbMethodCall * call = NULL;
+ OvsdbMethodCall * call;
char * cmd;
nm_auto_decref_json json_t *msg = NULL;
- json_t * params;
if (!priv->conn)
return;
- if (!priv->calls->len)
+
+ if (c_list_is_empty(&priv->calls_lst_head))
return;
- call = &g_array_index(priv->calls, OvsdbMethodCall, 0);
- if (call->id != COMMAND_PENDING)
+
+ call = c_list_first_entry(&priv->calls_lst_head, OvsdbMethodCall, calls_lst);
+ if (call->call_id != CALL_ID_UNSPEC)
return;
- call->id = priv->seq++;
+
+ call->call_id = ++priv->call_id_counter;
switch (call->command) {
case OVSDB_MONITOR:
- msg = json_pack("{s:i, s:s, s:[s, n, {"
+ msg = json_pack("{s:I, s:s, s:[s, n, {"
" s:[{s:[s, s, s]}],"
" s:[{s:[s, s, s]}],"
" s:[{s:[s, s, s, s]}],"
" s:[{s:[]}]"
"}]}",
"id",
- call->id,
+ (json_int_t) call->call_id,
"method",
"monitor",
"params",
@@ -1026,57 +1312,81 @@ ovsdb_next_command(NMOvsdb *self)
"Open_vSwitch",
"columns");
break;
- case OVSDB_ADD_INTERFACE:
- params = json_array();
- json_array_append_new(params, json_string("Open_vSwitch"));
- json_array_append_new(params, _inc_next_cfg(priv->db_uuid));
-
- _add_interface(self,
- params,
- call->bridge,
- call->port,
- call->interface,
- call->bridge_device,
- call->interface_device);
+ default:
+ {
+ json_t *params = NULL;
- msg = json_pack("{s:i, s:s, s:o}", "id", call->id, "method", "transact", "params", params);
- break;
- case OVSDB_DEL_INTERFACE:
params = json_array();
json_array_append_new(params, json_string("Open_vSwitch"));
json_array_append_new(params, _inc_next_cfg(priv->db_uuid));
- _delete_interface(self, params, call->ifname);
+ switch (call->command) {
+ case OVSDB_ADD_INTERFACE:
+ _add_interface(self,
+ params,
+ call->payload.add_interface.bridge,
+ call->payload.add_interface.port,
+ call->payload.add_interface.interface,
+ call->payload.add_interface.bridge_device,
+ call->payload.add_interface.interface_device);
+ break;
+ case OVSDB_DEL_INTERFACE:
+ _delete_interface(self, params, call->payload.del_interface.ifname);
+ break;
+ case OVSDB_SET_INTERFACE_MTU:
+ json_array_append_new(params,
+ json_pack("{s:s, s:s, s:{s: I}, s:[[s, s, s]]}",
+ "op",
+ "update",
+ "table",
+ "Interface",
+ "row",
+ "mtu_request",
+ (json_int_t) call->payload.set_interface_mtu.mtu,
+ "where",
+ "name",
+ "==",
+ call->payload.set_interface_mtu.ifname));
+ break;
+ case OVSDB_SET_EXTERNAL_IDS:
+ json_array_append_new(
+ params,
+ json_pack("{s:s, s:s, s:o, s:[[s, s, s]]}",
+ "op",
+ "mutate",
+ "table",
+ _device_type_to_table(call->payload.set_external_ids.device_type),
+ "mutations",
+ _j_create_external_ids_array_update(
+ call->payload.set_external_ids.connection_uuid,
+ call->payload.set_external_ids.exid_old,
+ call->payload.set_external_ids.exid_new),
+ "where",
+ "name",
+ "==",
+ call->payload.set_external_ids.ifname));
+ break;
- msg = json_pack("{s:i, s:s, s:o}", "id", call->id, "method", "transact", "params", params);
- break;
- case OVSDB_SET_INTERFACE_MTU:
- params = json_array();
- json_array_append_new(params, json_string("Open_vSwitch"));
- json_array_append_new(params, _inc_next_cfg(priv->db_uuid));
+ default:
+ nm_assert_not_reached();
+ break;
+ }
- json_array_append_new(params,
- json_pack("{s:s, s:s, s:{s: i}, s:[[s, s, s]]}",
- "op",
- "update",
- "table",
- "Interface",
- "row",
- "mtu_request",
- call->mtu,
- "where",
- "name",
- "==",
- call->ifname));
-
- msg = json_pack("{s:i, s:s, s:o}", "id", call->id, "method", "transact", "params", params);
+ msg = json_pack("{s:I, s:s, s:o}",
+ "id",
+ (json_int_t) call->call_id,
+ "method",
+ "transact",
+ "params",
+ params);
break;
}
+ }
g_return_if_fail(msg);
- _LOGT_call("send", call, msg);
- cmd = json_dumps(msg, 0);
+ cmd = json_dumps(msg, 0);
+ _LOGT_call(call, "send: call-id=%" G_GUINT64_FORMAT ", %s", call->call_id, cmd);
g_string_append(priv->output, cmd);
free(cmd);
@@ -1097,7 +1407,7 @@ ovsdb_next_command(NMOvsdb *self)
* [ "uuid", "185c93f6-0b39-424e-8587-77d074aa7ce0" ], ... ] ]
*/
static void
-_uuids_to_array(GPtrArray *array, const json_t *items)
+_uuids_to_array_inplace(GPtrArray *array, const json_t *items)
{
const char *key;
json_t * value;
@@ -1111,38 +1421,123 @@ _uuids_to_array(GPtrArray *array, const json_t *items)
value = json_array_get(items, index);
index++;
- if (!value)
+ if (!value || !key)
return;
- if (g_strcmp0(key, "uuid") == 0 && json_is_string(value)) {
- g_ptr_array_add(array, g_strdup(json_string_value(value)));
- } else if (g_strcmp0(key, "set") == 0 && json_is_array(value)) {
- json_array_foreach(value, set_index, set_value)
- {
- _uuids_to_array(array, set_value);
+ if (nm_streq(key, "uuid")) {
+ if (json_is_string(value))
+ g_ptr_array_add(array, g_strdup(json_string_value(value)));
+ continue;
+ }
+ if (nm_streq(key, "set")) {
+ if (json_is_array(value)) {
+ json_array_foreach (value, set_index, set_value)
+ _uuids_to_array_inplace(array, set_value);
}
+ continue;
}
}
}
-static char *
-_connection_uuid_from_external_ids(json_t *external_ids)
+static GPtrArray *
+_uuids_to_array(const json_t *items)
{
+ GPtrArray *array;
+
+ array = g_ptr_array_new_with_free_func(g_free);
+ _uuids_to_array_inplace(array, items);
+ return array;
+}
+
+static void
+_external_ids_extract(json_t *external_ids, GArray **out_array, const char **out_connection_uuid)
+{
+ json_t *array;
json_t *value;
- size_t index;
+ gsize index;
- if (g_strcmp0("map", json_string_value(json_array_get(external_ids, 0))) != 0)
- return NULL;
+ nm_assert(out_array && !*out_array);
+ nm_assert(!out_connection_uuid || !*out_connection_uuid);
- json_array_foreach(json_array_get(external_ids, 1), index, value)
- {
- if (g_strcmp0("NM.connection.uuid", json_string_value(json_array_get(value, 0))) == 0)
- return g_strdup(json_string_value(json_array_get(value, 1)));
+ if (!nm_streq0("map", json_string_value(json_array_get(external_ids, 0))))
+ return;
+
+ array = json_array_get(external_ids, 1);
+
+ json_array_foreach (array, index, value) {
+ const char * key = json_string_value(json_array_get(value, 0));
+ const char * val = json_string_value(json_array_get(value, 1));
+ NMUtilsNamedValue *v;
+
+ if (!key || !val)
+ continue;
+
+ if (!*out_array) {
+ *out_array = g_array_new(FALSE, FALSE, sizeof(NMUtilsNamedValue));
+ g_array_set_clear_func(*out_array,
+ (GDestroyNotify) nm_utils_named_value_clear_with_g_free);
+ }
+
+ v = nm_g_array_append_new(*out_array, NMUtilsNamedValue);
+ *v = (NMUtilsNamedValue){
+ .name = g_strdup(key),
+ .value_str = g_strdup(val),
+ };
+
+ if (out_connection_uuid && nm_streq(v->name, NM_OVS_EXTERNAL_ID_NM_CONNECTION_UUID)) {
+ *out_connection_uuid = v->value_str;
+ out_connection_uuid = NULL;
+ }
}
+}
- return NULL;
+static gboolean
+_external_ids_equal(const GArray *arr1, const GArray *arr2)
+{
+ guint n;
+ guint i;
+
+ n = nm_g_array_len(arr1);
+
+ if (n != nm_g_array_len(arr2))
+ return FALSE;
+ for (i = 0; i < n; i++) {
+ const NMUtilsNamedValue *n1 = &g_array_index(arr1, NMUtilsNamedValue, i);
+ const NMUtilsNamedValue *n2 = &g_array_index(arr2, NMUtilsNamedValue, i);
+
+ if (!nm_streq0(n1->name, n2->name))
+ return FALSE;
+ if (!nm_streq0(n1->value_str, n2->value_str))
+ return FALSE;
+ }
+ return TRUE;
}
+static char *
+_external_ids_to_string(const GArray *arr)
+{
+ NMStrBuf strbuf;
+ guint i;
+
+ if (!arr)
+ return g_strdup("empty");
+
+ nm_str_buf_init(&strbuf, NM_UTILS_GET_NEXT_REALLOC_SIZE_104, FALSE);
+ nm_str_buf_append(&strbuf, "[");
+ for (i = 0; i < arr->len; i++) {
+ const NMUtilsNamedValue *n = &g_array_index(arr, NMUtilsNamedValue, i);
+
+ if (i > 0)
+ nm_str_buf_append_c(&strbuf, ',');
+ nm_str_buf_append_printf(&strbuf, " \"%s\" = \"%s\"]", n->name, n->value_str);
+ }
+ nm_str_buf_append(&strbuf, " ]");
+
+ return nm_str_buf_finalize(&strbuf, NULL);
+}
+
+/*****************************************************************************/
+
/**
* ovsdb_got_update:
*
@@ -1163,14 +1558,11 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
json_error_t json_error = {
0,
};
- void * iter;
- const char * name;
- const char * key;
- const char * type;
- json_t * value;
- OpenvswitchBridge * ovs_bridge;
- OpenvswitchPort * ovs_port;
- OpenvswitchInterface *ovs_interface;
+ void * iter;
+ const char *name;
+ const char *key;
+ const char *type;
+ json_t * value;
if (json_unpack_ex(msg,
&json_error,
@@ -1199,17 +1591,14 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
nm_utils_strdup_reset(&priv->db_uuid, s);
}
- /* Interfaces */
- json_object_foreach(interface, key, value)
- {
- json_t * error = NULL;
- gboolean old = FALSE;
- gboolean new = FALSE;
-
- if (json_unpack(value, "{s:{}}", "old") == 0)
- old = TRUE;
+ json_object_foreach (interface, key, value) {
+ OpenvswitchInterface *ovs_interface;
+ gs_unref_array GArray *external_ids_arr = NULL;
+ const char * connection_uuid = NULL;
+ json_t * error = NULL;
+ int r;
- if (json_unpack(value,
+ r = json_unpack(value,
"{s:{s:s, s:s, s?:o, s:o}}",
"new",
"name",
@@ -1219,85 +1608,120 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
"error",
&error,
"external_ids",
- &external_ids)
- == 0)
- new = TRUE;
-
- if (old) {
- ovs_interface = g_hash_table_lookup(priv->interfaces, key);
- if (!ovs_interface) {
- _LOGW("Interface '%s' was not seen", key);
- } else if (!new || strcmp(ovs_interface->name, name) != 0) {
- old = FALSE;
- _LOGT("removed an '%s' interface: %s%s%s",
- ovs_interface->type,
- ovs_interface->name,
- ovs_interface->connection_uuid ? ", " : "",
- ovs_interface->connection_uuid ?: "");
- if (g_strcmp0(ovs_interface->type, "internal") == 0) {
- /* Currently, the factory only creates NMDevices for
- * internal interfaces. Ignore the rest. */
- g_signal_emit(self,
- signals[DEVICE_REMOVED],
- 0,
- ovs_interface->name,
- NM_DEVICE_TYPE_OVS_INTERFACE);
- }
+ &external_ids);
+ if (r != 0) {
+ gpointer unused;
+
+ r = json_unpack(value, "{s:{}}", "old");
+ if (r != 0)
+ continue;
+
+ if (!g_hash_table_steal_extended(priv->interfaces,
+ &key,
+ (gpointer *) &ovs_interface,
+ &unused))
+ continue;
+
+ _LOGT("obj[iface:%s]: removed an '%s' interface: %s%s%s",
+ key,
+ ovs_interface->type,
+ ovs_interface->name,
+ NM_PRINT_FMT_QUOTED2(ovs_interface->connection_uuid,
+ ", ",
+ ovs_interface->connection_uuid,
+ ""));
+ if (_openvswitch_interface_should_emit_signal(ovs_interface)) {
+ _signal_emit_device_removed(self,
+ ovs_interface->name,
+ NM_DEVICE_TYPE_OVS_INTERFACE);
+ }
+ _free_interface(ovs_interface);
+ continue;
+ }
+
+ ovs_interface = g_hash_table_lookup(priv->interfaces, &key);
+
+ if (ovs_interface
+ && (!nm_streq0(ovs_interface->name, name) || !nm_streq0(ovs_interface->type, type))) {
+ if (!g_hash_table_steal(priv->interfaces, ovs_interface))
+ nm_assert_not_reached();
+ if (_openvswitch_interface_should_emit_signal(ovs_interface)) {
+ _signal_emit_device_removed(self,
+ ovs_interface->name,
+ NM_DEVICE_TYPE_OVS_INTERFACE);
}
- g_hash_table_remove(priv->interfaces, key);
+ nm_clear_pointer(&ovs_interface, _free_interface);
}
- if (new) {
- ovs_interface = g_slice_new(OpenvswitchInterface);
- ovs_interface->name = g_strdup(name);
- ovs_interface->type = g_strdup(type);
- ovs_interface->connection_uuid = _connection_uuid_from_external_ids(external_ids);
- g_hash_table_insert(priv->interfaces, g_strdup(key), ovs_interface);
- if (old) {
- _LOGT("changed an '%s' interface: %s%s%s",
+ _external_ids_extract(external_ids, &external_ids_arr, &connection_uuid);
+
+ if (ovs_interface) {
+ gboolean changed = FALSE;
+
+ nm_assert(nm_streq0(ovs_interface->name, name));
+
+ changed |= nm_utils_strdup_reset(&ovs_interface->type, type);
+ changed |= nm_utils_strdup_reset(&ovs_interface->connection_uuid, connection_uuid);
+ if (!_external_ids_equal(ovs_interface->external_ids, external_ids_arr)) {
+ NM_SWAP(&ovs_interface->external_ids, &external_ids_arr);
+ changed = TRUE;
+ }
+ if (changed) {
+ gs_free char *strtmp = NULL;
+
+ _LOGT("obj[iface:%s]: changed an '%s' interface: %s%s%s, external-ids=%s",
+ key,
type,
ovs_interface->name,
- ovs_interface->connection_uuid ? ", " : "",
- ovs_interface->connection_uuid ?: "");
- } else {
- _LOGT("added an '%s' interface: %s%s%s",
- ovs_interface->type,
- ovs_interface->name,
- ovs_interface->connection_uuid ? ", " : "",
- ovs_interface->connection_uuid ?: "");
- if (g_strcmp0(ovs_interface->type, "internal") == 0) {
- /* Currently, the factory only creates NMDevices for
- * internal interfaces. Ignore the rest. */
- g_signal_emit(self,
- signals[DEVICE_ADDED],
- 0,
- ovs_interface->name,
- NM_DEVICE_TYPE_OVS_INTERFACE);
- }
- }
- /* The error is a string. No error is indicated by an empty set,
- * because why the fuck not: [ "set": [] ] */
- if (error && json_is_string(error)) {
- g_signal_emit(self,
- signals[INTERFACE_FAILED],
- 0,
- ovs_interface->name,
- ovs_interface->connection_uuid,
- json_string_value(error));
+ NM_PRINT_FMT_QUOTED2(ovs_interface->connection_uuid,
+ ", ",
+ ovs_interface->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_interface->external_ids)));
}
+ } else {
+ gs_free char *strtmp = NULL;
+
+ ovs_interface = g_slice_new(OpenvswitchInterface);
+ *ovs_interface = (OpenvswitchInterface){
+ .interface_uuid = g_strdup(key),
+ .name = g_strdup(name),
+ .type = g_strdup(type),
+ .connection_uuid = g_strdup(connection_uuid),
+ .external_ids = g_steal_pointer(&external_ids_arr),
+ };
+ g_hash_table_add(priv->interfaces, ovs_interface);
+ _LOGT("obj[iface:%s]: added an '%s' interface: %s%s%s, external-ids=%s",
+ key,
+ ovs_interface->type,
+ ovs_interface->name,
+ NM_PRINT_FMT_QUOTED2(ovs_interface->connection_uuid,
+ ", ",
+ ovs_interface->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_interface->external_ids)));
+ if (_openvswitch_interface_should_emit_signal(ovs_interface))
+ _signal_emit_device_added(self, ovs_interface->name, NM_DEVICE_TYPE_OVS_INTERFACE);
}
- }
- /* Ports */
- json_object_foreach(port, key, value)
- {
- gboolean old = FALSE;
- gboolean new = FALSE;
+ /* The error is a string. No error is indicated by an empty set,
+ * Why not: [ "set": [] ] ? */
+ if (error && json_is_string(error)) {
+ _signal_emit_interface_failed(self,
+ ovs_interface->name,
+ ovs_interface->connection_uuid,
+ json_string_value(error));
+ }
+ }
- if (json_unpack(value, "{s:{}}", "old") == 0)
- old = TRUE;
+ json_object_foreach (port, key, value) {
+ gs_unref_ptrarray GPtrArray *interfaces = NULL;
+ OpenvswitchPort * ovs_port;
+ gs_unref_array GArray *external_ids_arr = NULL;
+ const char * connection_uuid = NULL;
+ int r;
- if (json_unpack(value,
+ r = json_unpack(value,
"{s:{s:s, s:o, s:o}}",
"new",
"name",
@@ -1305,63 +1729,100 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
"external_ids",
&external_ids,
"interfaces",
- &items)
- == 0)
- new = TRUE;
-
- if (old) {
- ovs_port = g_hash_table_lookup(priv->ports, key);
- if (!new || g_strcmp0(ovs_port->name, name) != 0) {
- old = FALSE;
- _LOGT("removed a port: %s%s%s",
- ovs_port->name,
- ovs_port->connection_uuid ? ", " : "",
- ovs_port->connection_uuid ?: "");
- g_signal_emit(self,
- signals[DEVICE_REMOVED],
- 0,
- ovs_port->name,
- NM_DEVICE_TYPE_OVS_PORT);
- }
- g_hash_table_remove(priv->ports, key);
+ &items);
+ if (r != 0) {
+ gpointer unused;
+
+ r = json_unpack(value, "{s:{}}", "old");
+ if (r != 0)
+ continue;
+
+ if (!g_hash_table_steal_extended(priv->ports, &key, (gpointer *) &ovs_port, &unused))
+ continue;
+
+ _LOGT("obj[port:%s]: removed a port: %s%s%s",
+ key,
+ ovs_port->name,
+ NM_PRINT_FMT_QUOTED2(ovs_port->connection_uuid,
+ ", ",
+ ovs_port->connection_uuid,
+ ""));
+ _signal_emit_device_removed(self, ovs_port->name, NM_DEVICE_TYPE_OVS_PORT);
+ _free_port(ovs_port);
+ continue;
}
- if (new) {
- ovs_port = g_slice_new(OpenvswitchPort);
- ovs_port->name = g_strdup(name);
- ovs_port->connection_uuid = _connection_uuid_from_external_ids(external_ids);
- ovs_port->interfaces = g_ptr_array_new_with_free_func(g_free);
- _uuids_to_array(ovs_port->interfaces, items);
- g_hash_table_insert(priv->ports, g_strdup(key), ovs_port);
- if (old) {
- _LOGT("changed a port: %s%s%s",
- ovs_port->name,
- ovs_port->connection_uuid ? ", " : "",
- ovs_port->connection_uuid ?: "");
- } else {
- _LOGT("added a port: %s%s%s",
+ ovs_port = g_hash_table_lookup(priv->ports, &key);
+
+ if (ovs_port && !nm_streq0(ovs_port->name, name)) {
+ if (!g_hash_table_steal(priv->ports, ovs_port))
+ nm_assert_not_reached();
+ _signal_emit_device_removed(self, ovs_port->name, NM_DEVICE_TYPE_OVS_PORT);
+ nm_clear_pointer(&ovs_port, _free_port);
+ }
+
+ _external_ids_extract(external_ids, &external_ids_arr, &connection_uuid);
+ interfaces = _uuids_to_array(items);
+
+ if (ovs_port) {
+ gboolean changed = FALSE;
+
+ nm_assert(nm_streq0(ovs_port->name, name));
+
+ changed |= nm_utils_strdup_reset(&ovs_port->name, name);
+ changed |= nm_utils_strdup_reset(&ovs_port->connection_uuid, g_strdup(connection_uuid));
+ if (nm_strv_ptrarray_cmp(ovs_port->interfaces, interfaces) != 0) {
+ NM_SWAP(&ovs_port->interfaces, &interfaces);
+ changed = TRUE;
+ }
+ if (!_external_ids_equal(ovs_port->external_ids, external_ids_arr)) {
+ NM_SWAP(&ovs_port->external_ids, &external_ids_arr);
+ changed = TRUE;
+ }
+ if (changed) {
+ gs_free char *strtmp = NULL;
+
+ _LOGT("obj[port:%s]: changed a port: %s%s%s, external-ids=%s",
+ key,
ovs_port->name,
- ovs_port->connection_uuid ? ", " : "",
- ovs_port->connection_uuid ?: "");
- g_signal_emit(self,
- signals[DEVICE_ADDED],
- 0,
- ovs_port->name,
- NM_DEVICE_TYPE_OVS_PORT);
+ NM_PRINT_FMT_QUOTED2(ovs_port->connection_uuid,
+ ", ",
+ ovs_port->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_port->external_ids)));
}
+ } else {
+ gs_free char *strtmp = NULL;
+
+ ovs_port = g_slice_new(OpenvswitchPort);
+ *ovs_port = (OpenvswitchPort){
+ .port_uuid = g_strdup(key),
+ .name = g_strdup(name),
+ .connection_uuid = g_strdup(connection_uuid),
+ .interfaces = g_steal_pointer(&interfaces),
+ .external_ids = g_steal_pointer(&external_ids_arr),
+ };
+ g_hash_table_add(priv->ports, ovs_port);
+ _LOGT("obj[port:%s]: added a port: %s%s%s, external-ids=%s",
+ key,
+ ovs_port->name,
+ NM_PRINT_FMT_QUOTED2(ovs_port->connection_uuid,
+ ", ",
+ ovs_port->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_port->external_ids)));
+ _signal_emit_device_added(self, ovs_port->name, NM_DEVICE_TYPE_OVS_PORT);
}
}
- /* Bridges */
- json_object_foreach(bridge, key, value)
- {
- gboolean old = FALSE;
- gboolean new = FALSE;
+ json_object_foreach (bridge, key, value) {
+ gs_unref_ptrarray GPtrArray *ports = NULL;
+ OpenvswitchBridge * ovs_bridge;
+ gs_unref_array GArray *external_ids_arr = NULL;
+ const char * connection_uuid = NULL;
+ int r;
- if (json_unpack(value, "{s:{}}", "old") == 0)
- old = TRUE;
-
- if (json_unpack(value,
+ r = json_unpack(value,
"{s:{s:s, s:o, s:o}}",
"new",
"name",
@@ -1369,50 +1830,94 @@ ovsdb_got_update(NMOvsdb *self, json_t *msg)
"external_ids",
&external_ids,
"ports",
- &items)
- == 0)
- new = TRUE;
-
- if (old) {
- ovs_bridge = g_hash_table_lookup(priv->bridges, key);
- if (!new || g_strcmp0(ovs_bridge->name, name) != 0) {
- old = FALSE;
- _LOGT("removed a bridge: %s%s%s",
- ovs_bridge->name,
- ovs_bridge->connection_uuid ? ", " : "",
- ovs_bridge->connection_uuid ?: "");
- g_signal_emit(self,
- signals[DEVICE_REMOVED],
- 0,
- ovs_bridge->name,
- NM_DEVICE_TYPE_OVS_BRIDGE);
- }
- g_hash_table_remove(priv->bridges, key);
+ &items);
+
+ if (r != 0) {
+ gpointer unused;
+
+ r = json_unpack(value, "{s:{}}", "old");
+ if (r != 0)
+ continue;
+
+ if (!g_hash_table_steal_extended(priv->bridges,
+ &key,
+ (gpointer *) &ovs_bridge,
+ &unused))
+ continue;
+
+ _LOGT("obj[bridge:%s]: removed a bridge: %s%s%s",
+ key,
+ ovs_bridge->name,
+ NM_PRINT_FMT_QUOTED2(ovs_bridge->connection_uuid,
+ ", ",
+ ovs_bridge->connection_uuid,
+ ""));
+ _signal_emit_device_removed(self, ovs_bridge->name, NM_DEVICE_TYPE_OVS_BRIDGE);
+ _free_bridge(ovs_bridge);
+ continue;
}
- if (new) {
- ovs_bridge = g_slice_new(OpenvswitchBridge);
- ovs_bridge->name = g_strdup(name);
- ovs_bridge->connection_uuid = _connection_uuid_from_external_ids(external_ids);
- ovs_bridge->ports = g_ptr_array_new_with_free_func(g_free);
- _uuids_to_array(ovs_bridge->ports, items);
- g_hash_table_insert(priv->bridges, g_strdup(key), ovs_bridge);
- if (old) {
- _LOGT("changed a bridge: %s%s%s",
- ovs_bridge->name,
- ovs_bridge->connection_uuid ? ", " : "",
- ovs_bridge->connection_uuid ?: "");
- } else {
- _LOGT("added a bridge: %s%s%s",
+ ovs_bridge = g_hash_table_lookup(priv->bridges, &key);
+
+ if (ovs_bridge && !nm_streq0(ovs_bridge->name, name)) {
+ if (!g_hash_table_steal(priv->bridges, ovs_bridge))
+ nm_assert_not_reached();
+ _signal_emit_device_removed(self, ovs_bridge->name, NM_DEVICE_TYPE_OVS_BRIDGE);
+ nm_clear_pointer(&ovs_bridge, _free_bridge);
+ }
+
+ _external_ids_extract(external_ids, &external_ids_arr, &connection_uuid);
+ ports = _uuids_to_array(items);
+
+ if (ovs_bridge) {
+ gboolean changed = FALSE;
+
+ nm_assert(nm_streq0(ovs_bridge->name, name));
+
+ changed = nm_utils_strdup_reset(&ovs_bridge->name, name);
+ changed =
+ nm_utils_strdup_reset(&ovs_bridge->connection_uuid, g_strdup(connection_uuid));
+ if (nm_strv_ptrarray_cmp(ovs_bridge->ports, ports) != 0) {
+ NM_SWAP(&ovs_bridge->ports, &ports);
+ changed = TRUE;
+ }
+ if (!_external_ids_equal(ovs_bridge->external_ids, external_ids_arr)) {
+ NM_SWAP(&ovs_bridge->external_ids, &external_ids_arr);
+ changed = TRUE;
+ }
+ if (changed) {
+ gs_free char *strtmp = NULL;
+
+ _LOGT("obj[bridge:%s]: changed a bridge: %s%s%s, external-ids=%s",
+ key,
ovs_bridge->name,
- ovs_bridge->connection_uuid ? ", " : "",
- ovs_bridge->connection_uuid ?: "");
- g_signal_emit(self,
- signals[DEVICE_ADDED],
- 0,
- ovs_bridge->name,
- NM_DEVICE_TYPE_OVS_BRIDGE);
+ NM_PRINT_FMT_QUOTED2(ovs_bridge->connection_uuid,
+ ", ",
+ ovs_bridge->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_bridge->external_ids)));
}
+ } else {
+ gs_free char *strtmp = NULL;
+
+ ovs_bridge = g_slice_new(OpenvswitchBridge);
+ *ovs_bridge = (OpenvswitchBridge){
+ .bridge_uuid = g_strdup(key),
+ .name = g_strdup(name),
+ .connection_uuid = g_strdup(connection_uuid),
+ .ports = g_steal_pointer(&ports),
+ .external_ids = g_steal_pointer(&external_ids_arr),
+ };
+ g_hash_table_add(priv->bridges, ovs_bridge);
+ _LOGT("obj[bridge:%s]: added a bridge: %s%s%s, external-ids=%s",
+ key,
+ ovs_bridge->name,
+ NM_PRINT_FMT_QUOTED2(ovs_bridge->connection_uuid,
+ ", ",
+ ovs_bridge->connection_uuid,
+ ""),
+ (strtmp = _external_ids_to_string(ovs_bridge->external_ids)));
+ _signal_emit_device_added(self, ovs_bridge->name, NM_DEVICE_TYPE_OVS_BRIDGE);
}
}
}
@@ -1455,16 +1960,12 @@ ovsdb_got_msg(NMOvsdb *self, json_t *msg)
json_error_t json_error = {
0,
};
- json_t * json_id = NULL;
- gint64 id = -1;
- const char * method = NULL;
- json_t * params = NULL;
- json_t * result = NULL;
- json_t * error = NULL;
- OvsdbMethodCall * call = NULL;
- OvsdbMethodCallback callback;
- gpointer user_data;
- gs_free_error GError *local = NULL;
+ json_t * json_id = NULL;
+ json_int_t id = (json_int_t) -1;
+ const char *method = NULL;
+ json_t * params = NULL;
+ json_t * result = NULL;
+ json_t * error = NULL;
if (json_unpack_ex(msg,
&json_error,
@@ -1497,10 +1998,10 @@ ovsdb_got_msg(NMOvsdb *self, json_t *msg)
return;
}
- if (g_strcmp0(method, "update") == 0) {
+ if (nm_streq0(method, "update")) {
/* This is a update method call. */
ovsdb_got_update(self, json_array_get(params, 1));
- } else if (g_strcmp0(method, "echo") == 0) {
+ } else if (nm_streq0(method, "echo")) {
/* This is an echo request. */
ovsdb_got_echo(self, id, params);
} else {
@@ -1509,24 +2010,28 @@ ovsdb_got_msg(NMOvsdb *self, json_t *msg)
return;
}
- if (id > -1) {
+ if (id >= 0) {
+ OvsdbMethodCall *call;
+ gs_free_error GError *local = NULL;
+ gs_free char * msg_as_str = NULL;
+
/* This is a response to a method call. */
- if (!priv->calls->len) {
- _LOGE("there are no queued calls expecting response %" G_GUINT64_FORMAT, id);
+ if (c_list_is_empty(&priv->calls_lst_head)) {
+ _LOGE("there are no queued calls expecting response %" G_GUINT64_FORMAT, (guint64) id);
ovsdb_disconnect(self, FALSE, FALSE);
return;
}
- call = &g_array_index(priv->calls, OvsdbMethodCall, 0);
- if (call->id != id) {
+ call = c_list_first_entry(&priv->calls_lst_head, OvsdbMethodCall, calls_lst);
+ if (call->call_id != id) {
_LOGE("expected a response to call %" G_GUINT64_FORMAT ", not %" G_GUINT64_FORMAT,
- call->id,
- id);
+ call->call_id,
+ (guint64) id);
ovsdb_disconnect(self, FALSE, FALSE);
return;
}
/* Cool, we found a corresponding call. Finish it. */
- _LOGT_call("response", call, msg);
+ _LOGT_call(call, "response: %s", (msg_as_str = json_dumps(msg, 0)));
if (!json_is_null(error)) {
/* The response contains an error. */
@@ -1537,10 +2042,8 @@ ovsdb_got_msg(NMOvsdb *self, json_t *msg)
json_string_value(error));
}
- callback = call->callback;
- user_data = call->user_data;
- g_array_remove_index(priv->calls, 0);
- callback(self, result, local, user_data);
+ _call_complete(call, result, local);
+
priv->num_failures = 0;
/* Don't progress further commands in case the callback hit an error
@@ -1709,11 +2212,8 @@ ovsdb_write(NMOvsdb *self)
static void
ovsdb_disconnect(NMOvsdb *self, gboolean retry, gboolean is_disposing)
{
- NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
- OvsdbMethodCall * call;
- OvsdbMethodCallback callback;
- gpointer user_data;
- gs_free_error GError *error = NULL;
+ NMOvsdbPrivate * priv = NM_OVSDB_GET_PRIVATE(self);
+ OvsdbMethodCall *call;
nm_assert(!retry || !is_disposing);
@@ -1723,18 +2223,19 @@ ovsdb_disconnect(NMOvsdb *self, gboolean retry, gboolean is_disposing)
_LOGD("disconnecting from ovsdb, retry %d", retry);
if (retry) {
- if (priv->calls->len != 0)
- g_array_index(priv->calls, OvsdbMethodCall, 0).id = COMMAND_PENDING;
- } else {
- nm_utils_error_set_cancelled(&error, is_disposing, "NMOvsdb");
-
- while (priv->calls->len) {
- call = &g_array_index(priv->calls, OvsdbMethodCall, priv->calls->len - 1);
- callback = call->callback;
- user_data = call->user_data;
- g_array_remove_index(priv->calls, priv->calls->len - 1);
- callback(self, NULL, error, user_data);
+ if (!c_list_is_empty(&priv->calls_lst_head)) {
+ call = c_list_first_entry(&priv->calls_lst_head, OvsdbMethodCall, calls_lst);
+ call->call_id = CALL_ID_UNSPEC;
}
+ } else {
+ gs_free_error GError *error = NULL;
+
+ if (is_disposing)
+ nm_utils_error_set_cancelled(&error, is_disposing, "NMOvsdb");
+ else
+ nm_utils_error_set(&error, NM_UTILS_ERROR_NOT_READY, "disconnected from ovsdb");
+ while ((call = c_list_last_entry(&priv->calls_lst_head, OvsdbMethodCall, calls_lst)))
+ _call_complete(call, NULL, error);
}
priv->bufp = 0;
@@ -1823,17 +2324,11 @@ ovsdb_try_connect(NMOvsdb *self)
/* Queue a monitor call before any other command, ensuring that we have an up
* to date view of existing bridged that we need for add and remove ops. */
ovsdb_call_method(self,
- OVSDB_MONITOR,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
_monitor_bridges_cb,
NULL,
- TRUE);
+ TRUE,
+ OVSDB_MONITOR,
+ OVSDB_METHOD_PAYLOAD_MONITOR());
}
/*****************************************************************************/
@@ -1858,8 +2353,7 @@ _transact_cb(NMOvsdb *self, json_t *result, GError *error, gpointer user_data)
if (error)
goto out;
- json_array_foreach(result, index, value)
- {
+ json_array_foreach (result, index, value) {
if (json_unpack(value, "{s:s, s:s}", "error", &err, "details", &err_details) == 0) {
g_set_error(&error,
G_IO_ERROR,
@@ -1873,7 +2367,7 @@ _transact_cb(NMOvsdb *self, json_t *result, GError *error, gpointer user_data)
out:
call->callback(error, call->user_data);
- g_slice_free(OvsdbCall, call);
+ nm_g_slice_free(call);
}
static OvsdbCall *
@@ -1881,10 +2375,11 @@ ovsdb_call_new(NMOvsdbCallback callback, gpointer user_data)
{
OvsdbCall *call;
- call = g_slice_new(OvsdbCall);
- call->callback = callback;
- call->user_data = user_data;
-
+ call = g_slice_new(OvsdbCall);
+ *call = (OvsdbCall){
+ .callback = callback,
+ .user_data = user_data,
+ };
return call;
}
@@ -1899,17 +2394,15 @@ nm_ovsdb_add_interface(NMOvsdb * self,
gpointer user_data)
{
ovsdb_call_method(self,
- OVSDB_ADD_INTERFACE,
- NULL,
- bridge,
- port,
- interface,
- bridge_device,
- interface_device,
- 0,
_transact_cb,
ovsdb_call_new(callback, user_data),
- FALSE);
+ FALSE,
+ OVSDB_ADD_INTERFACE,
+ OVSDB_METHOD_PAYLOAD_ADD_INTERFACE(bridge,
+ port,
+ interface,
+ bridge_device,
+ interface_device));
}
void
@@ -1919,17 +2412,11 @@ nm_ovsdb_del_interface(NMOvsdb * self,
gpointer user_data)
{
ovsdb_call_method(self,
- OVSDB_DEL_INTERFACE,
- ifname,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
_transact_cb,
ovsdb_call_new(callback, user_data),
- FALSE);
+ FALSE,
+ OVSDB_DEL_INTERFACE,
+ OVSDB_METHOD_PAYLOAD_DEL_INTERFACE(ifname));
}
void
@@ -1940,88 +2427,60 @@ nm_ovsdb_set_interface_mtu(NMOvsdb * self,
gpointer user_data)
{
ovsdb_call_method(self,
- OVSDB_SET_INTERFACE_MTU,
- ifname,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- mtu,
_transact_cb,
ovsdb_call_new(callback, user_data),
- FALSE);
-}
-
-/*****************************************************************************/
-
-static void
-_clear_call(gpointer data)
-{
- OvsdbMethodCall *call = data;
-
- switch (call->command) {
- case OVSDB_MONITOR:
- break;
- case OVSDB_ADD_INTERFACE:
- g_clear_object(&call->bridge);
- g_clear_object(&call->port);
- g_clear_object(&call->interface);
- g_clear_object(&call->bridge_device);
- g_clear_object(&call->interface_device);
- break;
- case OVSDB_DEL_INTERFACE:
- case OVSDB_SET_INTERFACE_MTU:
- nm_clear_g_free(&call->ifname);
- break;
- }
+ FALSE,
+ OVSDB_SET_INTERFACE_MTU,
+ OVSDB_METHOD_PAYLOAD_SET_INTERFACE_MTU(ifname, mtu));
}
-static void
-_free_bridge(gpointer data)
+void
+nm_ovsdb_set_external_ids(NMOvsdb * self,
+ NMDeviceType device_type,
+ const char * ifname,
+ const char * connection_uuid,
+ NMSettingOvsExternalIDs *s_exid_old,
+ NMSettingOvsExternalIDs *s_exid_new)
{
- OpenvswitchBridge *ovs_bridge = data;
-
- g_free(ovs_bridge->name);
- g_free(ovs_bridge->connection_uuid);
- g_ptr_array_free(ovs_bridge->ports, TRUE);
- g_slice_free(OpenvswitchBridge, ovs_bridge);
-}
+ gs_unref_hashtable GHashTable *exid_old = NULL;
+ gs_unref_hashtable GHashTable *exid_new = NULL;
-static void
-_free_port(gpointer data)
-{
- OpenvswitchPort *ovs_port = data;
+ exid_old = s_exid_old
+ ? nm_utils_strdict_clone(_nm_setting_ovs_external_ids_get_data(s_exid_old))
+ : NULL;
+ exid_new = s_exid_new
+ ? nm_utils_strdict_clone(_nm_setting_ovs_external_ids_get_data(s_exid_new))
+ : NULL;
- g_free(ovs_port->name);
- g_free(ovs_port->connection_uuid);
- g_ptr_array_free(ovs_port->interfaces, TRUE);
- g_slice_free(OpenvswitchPort, ovs_port);
+ ovsdb_call_method(self,
+ NULL,
+ NULL,
+ FALSE,
+ OVSDB_SET_EXTERNAL_IDS,
+ OVSDB_METHOD_PAYLOAD_SET_EXTERNAL_IDS(device_type,
+ ifname,
+ connection_uuid,
+ exid_old,
+ exid_new));
}
-static void
-_free_interface(gpointer data)
-{
- OpenvswitchInterface *ovs_interface = data;
-
- g_free(ovs_interface->name);
- g_free(ovs_interface->connection_uuid);
- g_free(ovs_interface->type);
- g_slice_free(OpenvswitchInterface, ovs_interface);
-}
+/*****************************************************************************/
static void
nm_ovsdb_init(NMOvsdb *self)
{
NMOvsdbPrivate *priv = NM_OVSDB_GET_PRIVATE(self);
- priv->calls = g_array_new(FALSE, TRUE, sizeof(OvsdbMethodCall));
- g_array_set_clear_func(priv->calls, _clear_call);
- priv->input = g_string_new(NULL);
- priv->output = g_string_new(NULL);
- priv->bridges = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, _free_bridge);
- priv->ports = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, _free_port);
- priv->interfaces = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, _free_interface);
+ c_list_init(&priv->calls_lst_head);
+
+ priv->input = g_string_new(NULL);
+ priv->output = g_string_new(NULL);
+ priv->bridges =
+ g_hash_table_new_full(nm_pstr_hash, nm_pstr_equal, (GDestroyNotify) _free_bridge, NULL);
+ priv->ports =
+ g_hash_table_new_full(nm_pstr_hash, nm_pstr_equal, (GDestroyNotify) _free_port, NULL);
+ priv->interfaces =
+ g_hash_table_new_full(nm_pstr_hash, nm_pstr_equal, (GDestroyNotify) _free_interface, NULL);
ovsdb_try_connect(self);
}
@@ -2034,6 +2493,8 @@ dispose(GObject *object)
ovsdb_disconnect(self, FALSE, TRUE);
+ nm_assert(c_list_is_empty(&priv->calls_lst_head));
+
if (priv->input) {
g_string_free(priv->input, TRUE);
priv->input = NULL;
@@ -2042,10 +2503,6 @@ dispose(GObject *object)
g_string_free(priv->output, TRUE);
priv->output = NULL;
}
- if (priv->calls) {
- g_array_free(priv->calls, TRUE);
- priv->calls = NULL;
- }
nm_clear_pointer(&priv->bridges, g_hash_table_destroy);
nm_clear_pointer(&priv->ports, g_hash_table_destroy);
diff --git a/src/devices/ovs/nm-ovsdb.h b/src/devices/ovs/nm-ovsdb.h
index c9eee19c39..100e2ea59c 100644
--- a/src/devices/ovs/nm-ovsdb.h
+++ b/src/devices/ovs/nm-ovsdb.h
@@ -46,4 +46,13 @@ void nm_ovsdb_set_interface_mtu(NMOvsdb * self,
NMOvsdbCallback callback,
gpointer user_data);
+struct _NMSettingOvsExternalIDs;
+
+void nm_ovsdb_set_external_ids(NMOvsdb * self,
+ NMDeviceType device_type,
+ const char * ifname,
+ const char * connection_uuid,
+ struct _NMSettingOvsExternalIDs *s_exid_old,
+ struct _NMSettingOvsExternalIDs *s_exid_new);
+
#endif /* __NETWORKMANAGER_OVSDB_H__ */
diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c
index 27aa300430..0f481b8a62 100644
--- a/src/devices/team/nm-device-team.c
+++ b/src/devices/team/nm-device-team.c
@@ -25,8 +25,8 @@
#include "nm-ip4-config.h"
#include "nm-std-aux/nm-dbus-compat.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceTeam
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceTeam);
/*****************************************************************************/
@@ -1003,18 +1003,18 @@ constructed(GObject *object)
NMDevice *
nm_device_team_new(const char *iface)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_TEAM,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_DRIVER,
- "team",
- NM_DEVICE_TYPE_DESC,
- "Team",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_TEAM,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_TEAM,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_TEAM,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_DRIVER,
+ "team",
+ NM_DEVICE_TYPE_DESC,
+ "Team",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_TEAM,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_TEAM,
+ NULL);
}
static void
diff --git a/src/devices/team/nm-team-factory.c b/src/devices/team/nm-team-factory.c
index 644bef1cdb..eec2a9350a 100644
--- a/src/devices/team/nm-team-factory.c
+++ b/src/devices/team/nm-team-factory.c
@@ -46,7 +46,7 @@ G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
nm_manager_set_capability(NM_MANAGER_GET, NM_CAPABILITY_TEAM);
- return (NMDeviceFactory *) g_object_new(NM_TYPE_TEAM_FACTORY, NULL);
+ return g_object_new(NM_TYPE_TEAM_FACTORY, NULL);
}
/*****************************************************************************/
diff --git a/src/devices/wifi/nm-device-iwd.c b/src/devices/wifi/nm-device-iwd.c
index 64ac3de7e6..d3bebef216 100644
--- a/src/devices/wifi/nm-device-iwd.c
+++ b/src/devices/wifi/nm-device-iwd.c
@@ -27,9 +27,11 @@
#include "settings/nm-settings-connection.h"
#include "settings/nm-settings.h"
#include "supplicant/nm-supplicant-types.h"
+#include "nm-auth-utils.h"
+#include "nm-manager.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceIwd
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceIwd);
/*****************************************************************************/
@@ -54,13 +56,24 @@ typedef struct {
NMDeviceWifiCapabilities capabilities;
NMActRequestGetSecretsCallId *wifi_secrets_id;
guint periodic_scan_id;
+ guint periodic_update_id;
bool enabled : 1;
bool can_scan : 1;
- bool can_connect : 1;
+ bool nm_autoconnect : 1;
+ bool iwd_autoconnect : 1;
bool scanning : 1;
bool scan_requested : 1;
bool act_mode_switch : 1;
+ bool secrets_failed : 1;
+ bool networks_requested : 1;
+ bool networks_changed : 1;
gint64 last_scan;
+ uint32_t ap_id;
+ guint32 rate;
+ NMEtherAddr current_ap_bssid;
+ GDBusMethodInvocation * pending_agent_request;
+ NMActiveConnection * assumed_ac;
+ guint assumed_ac_timeout;
} NMDeviceIwdPrivate;
struct _NMDeviceIwd {
@@ -129,7 +142,9 @@ ap_add_remove(NMDeviceIwd *self,
nm_dbus_object_clear_and_unexport(&ap);
}
- nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+ if (priv->enabled && !priv->iwd_autoconnect)
+ nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+
if (recheck_available_connections)
nm_device_recheck_available_connections(NM_DEVICE(self));
}
@@ -159,6 +174,7 @@ set_current_ap(NMDeviceIwd *self, NMWifiAP *new_ap, gboolean recheck_available_c
g_object_unref(old_ap);
}
+ memset(&priv->current_ap_bssid, 0, ETH_ALEN);
_notify(self, PROP_ACTIVE_ACCESS_POINT);
_notify(self, PROP_MODE);
}
@@ -172,12 +188,12 @@ remove_all_aps(NMDeviceIwd *self)
if (c_list_is_empty(&priv->aps_lst_head))
return;
- set_current_ap(self, NULL, FALSE);
-
c_list_for_each_entry_safe (ap, ap_safe, &priv->aps_lst_head, aps_lst)
ap_add_remove(self, FALSE, ap, FALSE);
- nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+ if (!priv->iwd_autoconnect)
+ nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+
nm_device_recheck_available_connections(NM_DEVICE(self));
}
@@ -198,49 +214,37 @@ ap_security_flags_from_network_type(const char *type)
return flags;
}
-static void
-insert_ap_from_network(NMDeviceIwd *self,
- GHashTable * aps,
- const char * path,
- gint64 last_seen_msec,
- int16_t signal,
- uint32_t ap_id)
+static NMWifiAP *
+ap_from_network(NMDeviceIwd *self,
+ GDBusProxy * network,
+ NMRefString *bss_path,
+ gint64 last_seen_msec,
+ int16_t signal)
{
- gs_unref_object GDBusProxy *network_proxy = NULL;
- gs_unref_variant GVariant *name_value = NULL;
- gs_unref_variant GVariant *type_value = NULL;
- nm_auto_ref_string NMRefString *bss_path = NULL;
- const char * name;
- const char * type;
- NMSupplicantBssInfo bss_info;
- uint8_t bssid[6];
- NMWifiAP * ap;
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ gs_unref_variant GVariant *name_value = NULL;
+ gs_unref_variant GVariant *type_value = NULL;
+ const char * name;
+ const char * type;
+ uint32_t ap_id;
gs_unref_bytes GBytes *ssid = NULL;
+ NMWifiAP * ap;
+ NMSupplicantBssInfo bss_info;
- bss_path = nm_ref_string_new(path);
-
- if (g_hash_table_lookup(aps, path)) {
- _LOGD(LOGD_WIFI, "Duplicate network at %s", path);
- return;
- }
+ g_return_val_if_fail(network, NULL);
- network_proxy =
- nm_iwd_manager_get_dbus_interface(nm_iwd_manager_get(), path, NM_IWD_NETWORK_INTERFACE);
- if (!network_proxy)
- return;
-
- name_value = g_dbus_proxy_get_cached_property(network_proxy, "Name");
- type_value = g_dbus_proxy_get_cached_property(network_proxy, "Type");
+ name_value = g_dbus_proxy_get_cached_property(network, "Name");
+ type_value = g_dbus_proxy_get_cached_property(network, "Type");
if (!name_value || !g_variant_is_of_type(name_value, G_VARIANT_TYPE_STRING) || !type_value
|| !g_variant_is_of_type(type_value, G_VARIANT_TYPE_STRING))
- return;
+ return NULL;
name = g_variant_get_string(name_value, NULL);
type = g_variant_get_string(type_value, NULL);
if (nm_streq(type, "wep")) {
/* WEP not supported */
- return;
+ return NULL;
}
/* What we get from IWD are networks, or ESSs, that may contain
@@ -251,12 +255,7 @@ insert_ap_from_network(NMDeviceIwd *self,
* already does that. We fake the BSSIDs as they don't play any
* role either.
*/
- bssid[0] = 0x00;
- bssid[1] = 0x01;
- bssid[2] = 0x02;
- bssid[3] = ap_id >> 16;
- bssid[4] = ap_id >> 8;
- bssid[5] = ap_id;
+ ap_id = priv->ap_id++;
ssid = g_bytes_new(name, NM_MIN(32u, strlen(name)));
@@ -270,13 +269,39 @@ insert_ap_from_network(NMDeviceIwd *self,
.signal_percent = nm_wifi_utils_level_to_quality(signal / 100),
.frequency = 2417,
.max_rate = 65000,
+ .bssid = NM_ETHER_ADDR_INIT(0x00, 0x01, 0x02, ap_id >> 16, ap_id >> 8, ap_id),
};
- memcpy(bss_info.bssid, bssid, sizeof(bssid));
ap = nm_wifi_ap_new_from_properties(&bss_info);
nm_assert(bss_path == nm_wifi_ap_get_supplicant_path(ap));
+ return ap;
+}
+
+static void
+insert_ap_from_network(NMDeviceIwd *self,
+ GHashTable * aps,
+ const char * path,
+ gint64 last_seen_msec,
+ int16_t signal)
+{
+ gs_unref_object GDBusProxy *network_proxy = NULL;
+ nm_auto_ref_string NMRefString *bss_path = nm_ref_string_new(path);
+ NMWifiAP * ap;
+
+ if (g_hash_table_lookup(aps, bss_path)) {
+ _LOGD(LOGD_WIFI, "Duplicate network at %s", path);
+ return;
+ }
+
+ network_proxy =
+ nm_iwd_manager_get_dbus_interface(nm_iwd_manager_get(), path, NM_IWD_NETWORK_INTERFACE);
+
+ ap = ap_from_network(self, network_proxy, bss_path, last_seen_msec, signal);
+ if (!ap)
+ return;
+
g_hash_table_insert(aps, bss_path, ap);
}
@@ -288,55 +313,45 @@ get_ordered_networks_cb(GObject *source, GAsyncResult *res, gpointer user_data)
gs_free_error GError *error = NULL;
gs_unref_variant GVariant *variant = NULL;
GVariantIter * networks;
- const char * path, *name, *type;
+ const char * path;
int16_t signal;
NMWifiAP * ap, *ap_safe, *new_ap;
- gboolean changed = FALSE;
+ gboolean changed;
GHashTableIter ap_iter;
gs_unref_hashtable GHashTable *new_aps = NULL;
- gboolean compat;
- const char * return_sig;
- static uint32_t ap_id = 0;
gint64 last_seen_msec;
variant = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, &error);
+ if (!variant && nm_utils_error_is_cancelled(error))
+ return;
+
+ priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ priv->networks_requested = FALSE;
+
if (!variant) {
_LOGE(LOGD_WIFI, "Station.GetOrderedNetworks failed: %s", error->message);
return;
}
- priv = NM_DEVICE_IWD_GET_PRIVATE(self);
-
- /* Depending on whether we're using the Station interface or the Device
- * interface for compatibility with IWD <= 0.7, the return signature of
- * GetOrderedNetworks will be different.
- */
- compat = priv->dbus_station_proxy == priv->dbus_device_proxy;
- return_sig = compat ? "(a(osns))" : "(a(on))";
-
- if (!g_variant_is_of_type(variant, G_VARIANT_TYPE(return_sig))) {
+ if (!g_variant_is_of_type(variant, G_VARIANT_TYPE("(a(on))"))) {
_LOGE(LOGD_WIFI,
- "Station.GetOrderedNetworks returned type %s instead of %s",
- g_variant_get_type_string(variant),
- return_sig);
+ "Station.GetOrderedNetworks returned type %s instead of (a(on))",
+ g_variant_get_type_string(variant));
return;
}
new_aps = g_hash_table_new_full(nm_direct_hash, NULL, NULL, g_object_unref);
-
- g_variant_get(variant, return_sig, &networks);
+ g_variant_get(variant, "(a(on))", &networks);
last_seen_msec = nm_utils_get_monotonic_timestamp_msec();
- if (compat) {
- while (g_variant_iter_next(networks, "(&o&sn&s)", &path, &name, &signal, &type))
- insert_ap_from_network(self, new_aps, path, last_seen_msec, signal, ap_id++);
- } else {
- while (g_variant_iter_next(networks, "(&on)", &path, &signal))
- insert_ap_from_network(self, new_aps, path, last_seen_msec, signal, ap_id++);
- }
+ while (g_variant_iter_next(networks, "(&on)", &path, &signal))
+ insert_ap_from_network(self, new_aps, path, last_seen_msec, signal);
g_variant_iter_free(networks);
+ changed = priv->networks_changed;
+ priv->networks_changed = FALSE;
+
c_list_for_each_entry_safe (ap, ap_safe, &priv->aps_lst_head, aps_lst) {
new_ap = g_hash_table_lookup(new_aps, nm_wifi_ap_get_supplicant_path(ap));
if (new_ap) {
@@ -368,7 +383,9 @@ get_ordered_networks_cb(GObject *source, GAsyncResult *res, gpointer user_data)
}
if (changed) {
- nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+ if (!priv->iwd_autoconnect)
+ nm_device_emit_recheck_auto_activate(NM_DEVICE(self));
+
nm_device_recheck_available_connections(NM_DEVICE(self));
}
}
@@ -389,6 +406,61 @@ update_aps(NMDeviceIwd *self)
priv->cancellable,
get_ordered_networks_cb,
self);
+ priv->networks_requested = TRUE;
+}
+
+static void
+periodic_update(NMDeviceIwd *self)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ int ifindex;
+ guint32 new_rate;
+ int percent;
+ NMEtherAddr bssid;
+ gboolean ap_changed = FALSE;
+ NMPlatform * platform;
+
+ ifindex = nm_device_get_ifindex(NM_DEVICE(self));
+ if (ifindex <= 0)
+ g_return_if_reached();
+
+ platform = nm_device_get_platform(NM_DEVICE(self));
+
+ /* TODO: obtain quality through the net.connman.iwd.SignalLevelAgent API.
+ * For now we're waking up for the rate/BSSID updates anyway.
+ */
+ if (!nm_platform_wifi_get_station(platform, ifindex, &bssid, &percent, &new_rate)) {
+ _LOGD(LOGD_WIFI, "BSSID / quality / rate platform query failed");
+ return;
+ }
+
+ if (nm_wifi_ap_set_strength(priv->current_ap, (gint8) percent)) {
+#if NM_MORE_LOGGING
+ ap_changed = TRUE;
+#endif
+ }
+
+ if (new_rate != priv->rate) {
+ priv->rate = new_rate;
+ _notify(self, PROP_BITRATE);
+ }
+
+ if (nm_ether_addr_is_valid(&bssid) && !nm_ether_addr_equal(&bssid, &priv->current_ap_bssid)) {
+ priv->current_ap_bssid = bssid;
+ ap_changed |= nm_wifi_ap_set_address_bin(priv->current_ap, &bssid);
+ ap_changed |= nm_wifi_ap_set_freq(priv->current_ap,
+ nm_platform_wifi_get_frequency(platform, ifindex));
+ }
+
+ if (ap_changed)
+ _ap_dump(self, LOGL_DEBUG, priv->current_ap, "updated");
+}
+
+static gboolean
+periodic_update_cb(gpointer user_data)
+{
+ periodic_update(user_data);
+ return TRUE;
}
static void
@@ -414,6 +486,26 @@ wifi_secrets_cancel(NMDeviceIwd *self)
if (priv->wifi_secrets_id)
nm_act_request_cancel_secrets(NULL, priv->wifi_secrets_id);
nm_assert(!priv->wifi_secrets_id);
+
+ if (priv->pending_agent_request) {
+ g_dbus_method_invocation_return_error_literal(priv->pending_agent_request,
+ NM_DEVICE_ERROR,
+ NM_DEVICE_ERROR_INVALID_CONNECTION,
+ "NM secrets request cancelled");
+ g_clear_object(&priv->pending_agent_request);
+ }
+}
+
+static void
+cleanup_assumed_connect(NMDeviceIwd *self)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+
+ if (!priv->assumed_ac)
+ return;
+
+ g_signal_handlers_disconnect_by_data(priv->assumed_ac, self);
+ g_clear_object(&priv->assumed_ac);
}
static void
@@ -421,9 +513,12 @@ cleanup_association_attempt(NMDeviceIwd *self, gboolean disconnect)
{
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ cleanup_assumed_connect(self);
wifi_secrets_cancel(self);
set_current_ap(self, NULL, TRUE);
+ nm_clear_g_source(&priv->periodic_update_id);
+ nm_clear_g_source(&priv->assumed_ac_timeout);
if (disconnect && priv->dbus_station_proxy)
send_disconnect(self);
@@ -448,6 +543,32 @@ reset_mode(NMDeviceIwd * self,
user_data);
}
+static gboolean
+get_variant_boolean(GVariant *v, const char *property)
+{
+ if (!v || !g_variant_is_of_type(v, G_VARIANT_TYPE_BOOLEAN)) {
+ nm_log_warn(LOGD_DEVICE | LOGD_WIFI,
+ "Property %s not cached or not boolean type",
+ property);
+
+ return FALSE;
+ }
+
+ return g_variant_get_boolean(v);
+}
+
+static const char *
+get_variant_state(GVariant *v)
+{
+ if (!v || !g_variant_is_of_type(v, G_VARIANT_TYPE_STRING)) {
+ nm_log_warn(LOGD_DEVICE | LOGD_WIFI, "State property not cached or not a string");
+
+ return "unknown";
+ }
+
+ return g_variant_get_string(v, NULL);
+}
+
static void
deactivate(NMDevice *device)
{
@@ -457,6 +578,14 @@ deactivate(NMDevice *device)
if (!priv->dbus_obj)
return;
+ if (priv->dbus_station_proxy) {
+ gs_unref_variant GVariant *value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+
+ if (NM_IN_STRSET(get_variant_state(value), "disconnecting", "disconnected"))
+ return;
+ }
+
cleanup_association_attempt(self, TRUE);
priv->act_mode_switch = FALSE;
@@ -532,27 +661,13 @@ deactivate_async(NMDevice * device,
static gboolean
is_connection_known_network(NMConnection *connection)
{
- NMSettingWireless * s_wireless;
NMIwdNetworkSecurity security;
- gboolean security_ok;
- GBytes * ssid;
- gs_free char * ssid_utf8 = NULL;
-
- s_wireless = nm_connection_get_setting_wireless(connection);
- if (!s_wireless)
- return FALSE;
-
- ssid = nm_setting_wireless_get_ssid(s_wireless);
- if (!ssid)
- return FALSE;
+ gs_free char * ssid = NULL;
- ssid_utf8 = _nm_utils_ssid_to_utf8(ssid);
-
- security = nm_wifi_connection_get_iwd_security(connection, &security_ok);
- if (!security_ok)
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(connection, &ssid, &security))
return FALSE;
- return nm_iwd_manager_is_known_network(nm_iwd_manager_get(), ssid_utf8, security);
+ return nm_iwd_manager_is_known_network(nm_iwd_manager_get(), ssid, security);
}
static gboolean
@@ -584,7 +699,9 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
const char * perm_hw_addr;
const char * mode;
NMIwdNetworkSecurity security;
- gboolean mapped;
+ GBytes * ssid;
+ const guint8 * ssid_bytes;
+ gsize ssid_len;
if (!NM_DEVICE_CLASS(nm_device_iwd_parent_class)
->check_connection_compatible(device, connection, error))
@@ -592,12 +709,29 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
s_wireless = nm_connection_get_setting_wireless(connection);
+ /* complete_connection would be called (if at all) before this function
+ * so an SSID should always be set. IWD doesn't support non-UTF8 SSIDs
+ * (ignores BSSes with such SSIDs and has no way to represent them on
+ * DBus) so we can cut it short for connections with a non-UTF8 SSID.
+ */
+ ssid = nm_setting_wireless_get_ssid(s_wireless);
+ if (!ssid)
+ return FALSE;
+
+ ssid_bytes = g_bytes_get_data(ssid, &ssid_len);
+ if (!g_utf8_validate((const char *) ssid_bytes, ssid_len, NULL)) {
+ nm_utils_error_set_literal(error,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
+ "non-UTF-8 connection SSID not supported by IWD backend");
+ return FALSE;
+ }
+
perm_hw_addr = nm_device_get_permanent_hw_address(device);
mac = nm_setting_wireless_get_mac_address(s_wireless);
if (perm_hw_addr) {
if (mac && !nm_utils_hwaddr_matches(mac, -1, perm_hw_addr, -1)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"device MAC address does not match the profile");
return FALSE;
}
@@ -621,10 +755,10 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
return FALSE;
}
- security = nm_wifi_connection_get_iwd_security(connection, &mapped);
- if (!mapped) {
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(connection, NULL, &security)
+ || security == NM_IWD_NETWORK_SECURITY_WEP) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"connection authentication type not supported by IWD backend");
return FALSE;
}
@@ -636,7 +770,7 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
&& !NM_IN_STRSET(mode, NULL, NM_SETTING_WIRELESS_MODE_INFRA)) {
nm_utils_error_set_literal(
error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"non-infrastructure hidden networks not supported by the IWD backend");
return FALSE;
}
@@ -648,7 +782,7 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
if (security == NM_IWD_NETWORK_SECURITY_8021X) {
if (!is_connection_known_network(connection)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"802.1x connections must have IWD provisioning files");
return FALSE;
}
@@ -656,7 +790,7 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
NM_IWD_NETWORK_SECURITY_NONE,
NM_IWD_NETWORK_SECURITY_PSK)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"IWD backend only supports Open, PSK and 802.1x network "
"authentication in Infrastructure mode");
return FALSE;
@@ -664,21 +798,21 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
} else if (nm_streq(mode, NM_SETTING_WIRELESS_MODE_AP)) {
if (!(priv->capabilities & NM_WIFI_DEVICE_CAP_AP)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"device does not support Access Point mode");
return FALSE;
}
if (!NM_IN_SET(security, NM_IWD_NETWORK_SECURITY_PSK)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"IWD backend only supports PSK authentication in AP mode");
return FALSE;
}
} else if (nm_streq(mode, NM_SETTING_WIRELESS_MODE_ADHOC)) {
if (!(priv->capabilities & NM_WIFI_DEVICE_CAP_ADHOC)) {
nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"device does not support Ad-Hoc mode");
return FALSE;
}
@@ -686,14 +820,15 @@ check_connection_compatible(NMDevice *device, NMConnection *connection, GError *
if (!NM_IN_SET(security, NM_IWD_NETWORK_SECURITY_NONE, NM_IWD_NETWORK_SECURITY_PSK)) {
nm_utils_error_set_literal(
error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
"IWD backend only supports Open and PSK authentication in Ad-Hoc mode");
return FALSE;
}
} else {
- nm_utils_error_set_literal(error,
- NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
- "%s type profiles not supported by IWD backend");
+ nm_utils_error_set(error,
+ NM_UTILS_ERROR_CONNECTION_AVAILABLE_INCOMPATIBLE,
+ "'%s' type profiles not supported by IWD backend",
+ mode);
return FALSE;
}
@@ -707,11 +842,12 @@ check_connection_available(NMDevice * device,
const char * specific_object,
GError ** error)
{
- NMDeviceIwd * self = NM_DEVICE_IWD(device);
- NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
- NMSettingWireless * s_wifi;
- const char * mode;
- NMWifiAP * ap = NULL;
+ NMDeviceIwd * self = NM_DEVICE_IWD(device);
+ NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMSettingWireless * s_wifi;
+ const char * mode;
+ NMWifiAP * ap = NULL;
+ NMIwdNetworkSecurity security;
s_wifi = nm_connection_get_setting_wireless(connection);
g_return_val_if_fail(s_wifi, FALSE);
@@ -740,7 +876,16 @@ check_connection_available(NMDevice * device,
if (NM_IN_STRSET(mode, NM_SETTING_WIRELESS_MODE_AP, NM_SETTING_WIRELESS_MODE_ADHOC))
return TRUE;
- if (NM_FLAGS_HAS(flags, _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP))
+ /* Hidden SSIDs obviously don't always appear in the scan list either.
+ *
+ * For an explicit user-activation-request, a connection is considered
+ * available because for hidden Wi-Fi, clients didn't consistently
+ * set the 'hidden' property to indicate hidden SSID networks. If
+ * activating but the network isn't available let the device recheck
+ * availability.
+ */
+ if (nm_setting_wireless_get_hidden(s_wifi)
+ || NM_FLAGS_HAS(flags, _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST_IGNORE_AP))
return TRUE;
if (!ap)
@@ -756,7 +901,8 @@ check_connection_available(NMDevice * device,
/* 8021x networks can only be used if they've been provisioned on the IWD side and
* thus are Known Networks.
*/
- if (nm_wifi_connection_get_iwd_security(connection, NULL) == NM_IWD_NETWORK_SECURITY_8021X) {
+ if (nm_wifi_connection_get_iwd_ssid_and_security(connection, NULL, &security)
+ && security == NM_IWD_NETWORK_SECURITY_8021X) {
if (!is_ap_known_network(ap)) {
nm_utils_error_set_literal(
error,
@@ -769,6 +915,18 @@ check_connection_available(NMDevice * device,
return TRUE;
}
+/* To be used where the SSID has been validated before */
+static char *
+iwd_ssid_to_str(const GBytes *ssid)
+{
+ const guint8 *ssid_bytes;
+ gsize ssid_len;
+
+ ssid_bytes = g_bytes_get_data((GBytes *) ssid, &ssid_len);
+ nm_assert(ssid && g_utf8_validate((const char *) ssid_bytes, ssid_len, NULL));
+ return g_strndup((const char *) ssid_bytes, ssid_len);
+}
+
static gboolean
complete_connection(NMDevice * device,
NMConnection * connection,
@@ -781,20 +939,18 @@ complete_connection(NMDevice * device,
NMSettingWireless * s_wifi;
gs_free char * ssid_utf8 = NULL;
NMWifiAP * ap;
- GBytes * ssid;
- GBytes * setting_ssid = NULL;
- gboolean hidden = FALSE;
+ GBytes * ssid = NULL;
+ gboolean hidden = FALSE;
const char * mode;
s_wifi = nm_connection_get_setting_wireless(connection);
mode = s_wifi ? nm_setting_wireless_get_mode(s_wifi) : NULL;
- if (nm_streq0(mode, NM_SETTING_WIRELESS_MODE_AP)) {
- if (!nm_setting_verify(NM_SETTING(s_wifi), connection, error))
- return FALSE;
- ap = NULL;
- } else if (!specific_object) {
+ if (nm_streq0(mode, NM_SETTING_WIRELESS_MODE_AP) || !specific_object) {
+ const guint8 *ssid_bytes;
+ gsize ssid_len;
+
/* If not given a specific object, we need at minimum an SSID */
if (!s_wifi) {
g_set_error_literal(error,
@@ -804,16 +960,24 @@ complete_connection(NMDevice * device,
return FALSE;
}
- setting_ssid = nm_setting_wireless_get_ssid(s_wifi);
- if (!setting_ssid || g_bytes_get_size(setting_ssid) == 0) {
- g_set_error_literal(
- error,
- NM_DEVICE_ERROR,
- NM_DEVICE_ERROR_INVALID_CONNECTION,
- "A 'wireless' setting with a valid SSID is required if no AP path was given.");
+ ssid = nm_setting_wireless_get_ssid(s_wifi);
+ ssid_bytes = g_bytes_get_data(ssid, &ssid_len);
+
+ if (!ssid || ssid_len == 0 || !g_utf8_validate((const char *) ssid_bytes, ssid_len, NULL)) {
+ g_set_error_literal(error,
+ NM_DEVICE_ERROR,
+ NM_DEVICE_ERROR_INVALID_CONNECTION,
+ "A 'wireless' setting with a valid UTF-8 SSID is required if no AP "
+ "path was given.");
return FALSE;
}
+ }
+ if (nm_streq0(mode, NM_SETTING_WIRELESS_MODE_AP)) {
+ if (!nm_setting_verify(NM_SETTING(s_wifi), connection, error))
+ return FALSE;
+ ap = NULL;
+ } else if (!specific_object) {
/* Find a compatible AP in the scan list */
ap = nm_wifi_aps_find_first_compatible(&priv->aps_lst_head, connection);
if (!ap) {
@@ -824,6 +988,12 @@ complete_connection(NMDevice * device,
if (!nm_setting_verify(NM_SETTING(s_wifi), connection, error))
return FALSE;
+ /* We could either require the profile to be marked as hidden by the
+ * client or at least check that a hidden AP with a matching security
+ * type is in range using Station.GetHiddenAccessPoints(). For now
+ * assume it is hidden even though that will reveal the SSID on the
+ * air.
+ */
hidden = TRUE;
}
} else {
@@ -836,35 +1006,22 @@ complete_connection(NMDevice * device,
specific_object);
return FALSE;
}
- }
-
- /* Add a wifi setting if one doesn't exist yet */
- if (!s_wifi) {
- s_wifi = (NMSettingWireless *) nm_setting_wireless_new();
- nm_connection_add_setting(connection, NM_SETTING(s_wifi));
- }
- ssid = nm_setting_wireless_get_ssid(s_wifi);
- if (!ssid && ap)
ssid = nm_wifi_ap_get_ssid(ap);
- if (!ssid) {
- g_set_error_literal(error,
- NM_DEVICE_ERROR,
- NM_DEVICE_ERROR_INVALID_CONNECTION,
- "A 'wireless' setting with a valid SSID is required.");
- return FALSE;
+ /* Add a wifi setting if one doesn't exist yet */
+ if (!s_wifi) {
+ s_wifi = (NMSettingWireless *) nm_setting_wireless_new();
+ nm_connection_add_setting(connection, NM_SETTING(s_wifi));
+ }
}
if (ap) {
- if (!nm_wifi_ap_complete_connection(ap,
- connection,
- nm_wifi_utils_is_manf_default_ssid(ssid),
- error))
+ if (!nm_wifi_ap_complete_connection(ap, connection, FALSE, error))
return FALSE;
}
- ssid_utf8 = _nm_utils_ssid_to_utf8(ssid);
+ ssid_utf8 = iwd_ssid_to_str(ssid);
nm_utils_complete_generic(
nm_device_get_platform(device),
connection,
@@ -883,32 +1040,6 @@ complete_connection(NMDevice * device,
}
static gboolean
-get_variant_boolean(GVariant *v, const char *property)
-{
- if (!v || !g_variant_is_of_type(v, G_VARIANT_TYPE_BOOLEAN)) {
- nm_log_warn(LOGD_DEVICE | LOGD_WIFI,
- "Property %s not cached or not boolean type",
- property);
-
- return FALSE;
- }
-
- return g_variant_get_boolean(v);
-}
-
-static const char *
-get_variant_state(GVariant *v)
-{
- if (!v || !g_variant_is_of_type(v, G_VARIANT_TYPE_STRING)) {
- nm_log_warn(LOGD_DEVICE | LOGD_WIFI, "State property not cached or not a string");
-
- return "unknown";
- }
-
- return g_variant_get_string(v, NULL);
-}
-
-static gboolean
is_available(NMDevice *device, NMDeviceCheckDevAvailableFlags flags)
{
NMDeviceIwd * self = NM_DEVICE_IWD(device);
@@ -934,7 +1065,7 @@ get_autoconnect_allowed(NMDevice *device)
{
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(NM_DEVICE_IWD(device));
- return priv->can_connect;
+ return priv->nm_autoconnect;
}
static gboolean
@@ -1114,7 +1245,6 @@ check_scanning_prohibited(NMDeviceIwd *self, gboolean periodic)
case NM_DEVICE_STATE_UNAVAILABLE:
case NM_DEVICE_STATE_PREPARE:
case NM_DEVICE_STATE_CONFIG:
- case NM_DEVICE_STATE_NEED_AUTH:
case NM_DEVICE_STATE_IP_CONFIG:
case NM_DEVICE_STATE_IP_CHECK:
case NM_DEVICE_STATE_SECONDARIES:
@@ -1124,6 +1254,7 @@ check_scanning_prohibited(NMDeviceIwd *self, gboolean periodic)
case NM_DEVICE_STATE_DISCONNECTED:
case NM_DEVICE_STATE_FAILED:
case NM_DEVICE_STATE_ACTIVATED:
+ case NM_DEVICE_STATE_NEED_AUTH:
break;
}
@@ -1131,6 +1262,27 @@ check_scanning_prohibited(NMDeviceIwd *self, gboolean periodic)
return !priv->can_scan;
}
+static const char *
+get_agent_request_network_path(GDBusMethodInvocation *invocation)
+{
+ const char *method_name = g_dbus_method_invocation_get_method_name(invocation);
+ GVariant * params = g_dbus_method_invocation_get_parameters(invocation);
+ const char *network_path = NULL;
+
+ if (nm_streq(method_name, "RequestPassphrase"))
+ g_variant_get(params, "(s)", &network_path);
+ else if (nm_streq(method_name, "RequestPrivateKeyPassphrase"))
+ g_variant_get(params, "(s)", &network_path);
+ else if (nm_streq(method_name, "RequestUserNameAndPassword"))
+ g_variant_get(params, "(s)", &network_path);
+ else if (nm_streq(method_name, "RequestUserPassword")) {
+ const char *user;
+ g_variant_get(params, "(ss)", &network_path, &user);
+ }
+
+ return network_path;
+}
+
/*
* try_reply_agent_request
*
@@ -1238,6 +1390,25 @@ try_reply_agent_request(NMDeviceIwd * self,
return FALSE;
}
+static gboolean
+assumed_ac_timeout_cb(gpointer user_data)
+{
+ NMDeviceIwd * self = user_data;
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+
+ nm_assert(priv->assumed_ac);
+
+ priv->assumed_ac_timeout = 0;
+ nm_device_state_changed(NM_DEVICE(self),
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT);
+ /* NMDevice's state change -> NMActRequests/NMActiveConnection's state
+ * change -> assumed_connection_state_changed_before_managed() ->
+ * cleanup_association_attempt() so no need to call it explicitly.
+ */
+ return G_SOURCE_REMOVE;
+}
+
static void wifi_secrets_get_one(NMDeviceIwd * self,
const char * setting_name,
NMSecretAgentGetSecretsFlags flags,
@@ -1273,6 +1444,7 @@ wifi_secrets_cb(NMActRequest * req,
priv->wifi_secrets_id = NULL;
if (nm_utils_error_is_cancelled(error)) {
+ priv->secrets_failed = TRUE;
g_dbus_method_invocation_return_error_literal(invocation,
NM_DEVICE_ERROR,
NM_DEVICE_ERROR_INVALID_CONNECTION,
@@ -1300,6 +1472,20 @@ wifi_secrets_cb(NMActRequest * req,
goto secrets_error;
if (replied) {
+ /* If we replied to the secrets request from IWD in the "disconnected"
+ * state and IWD doesn't move to a new state within 1 second, assume
+ * something went wrong (shouldn't happen). If a state change arrives
+ * after that nothing is lost, state_changed() will try to assume the
+ * connection again.
+ */
+ if (priv->assumed_ac) {
+ gs_unref_variant GVariant *value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+
+ if (nm_streq(get_variant_state(value), "disconnected"))
+ priv->assumed_ac_timeout = g_timeout_add_seconds(1, assumed_ac_timeout_cb, self);
+ }
+
/* Change state back to what it was before NEED_AUTH */
nm_device_state_changed(device, NM_DEVICE_STATE_CONFIG, NM_DEVICE_STATE_REASON_NONE);
return;
@@ -1317,7 +1503,17 @@ secrets_error:
NM_DEVICE_ERROR,
NM_DEVICE_ERROR_INVALID_CONNECTION,
"NM secrets request failed");
- /* Now wait for the Connect callback to update device state */
+
+ if (priv->assumed_ac) {
+ nm_device_state_changed(device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NO_SECRETS);
+ /* NMDevice's state change -> NMActRequests/NMActiveConnection's state
+ * change -> assumed_connection_state_changed_before_managed() ->
+ * cleanup_association_attempt() so no need to call it explicitly.
+ */
+ } else {
+ priv->secrets_failed = TRUE;
+ /* Now wait for the Connect callback to update device state */
+ }
}
static void
@@ -1353,11 +1549,13 @@ network_connect_cb(GObject *source, GAsyncResult *res, gpointer user_data)
gs_unref_variant GVariant *variant = NULL;
gs_free_error GError *error = NULL;
NMConnection * connection;
- NMSettingWireless * s_wifi;
- GBytes * ssid;
- gs_free char * ssid_utf8 = NULL;
- NMDeviceStateReason reason = NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED;
+ gs_free char * ssid = NULL;
+ NMDeviceStateReason reason = NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED;
GVariant * value;
+ gboolean disconnect;
+
+ disconnect = !priv->iwd_autoconnect
+ || nm_device_autoconnect_blocked_get(device, NM_DEVICE_AUTOCONNECT_BLOCKED_ALL);
variant = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, &error);
if (!variant) {
@@ -1391,7 +1589,7 @@ network_connect_cb(GObject *source, GAsyncResult *res, gpointer user_data)
/* If secrets were wrong, we'd be getting a net.connman.iwd.Failed */
reason = NM_DEVICE_STATE_REASON_NO_SECRETS;
- } else if (nm_streq0(dbus_error, "net.connman.iwd.Aborted")) {
+ } else if (nm_streq0(dbus_error, "net.connman.iwd.Aborted") && priv->secrets_failed) {
/* If agent call was cancelled we'd be getting a net.connman.iwd.Aborted */
reason = NM_DEVICE_STATE_REASON_NO_SECRETS;
}
@@ -1401,37 +1599,36 @@ network_connect_cb(GObject *source, GAsyncResult *res, gpointer user_data)
nm_assert(nm_device_get_state(device) == NM_DEVICE_STATE_CONFIG);
+ disconnect = TRUE;
+
connection = nm_device_get_applied_connection(device);
if (!connection)
goto failed;
- s_wifi = nm_connection_get_setting_wireless(connection);
- if (!s_wifi)
- goto failed;
-
- ssid = nm_setting_wireless_get_ssid(s_wifi);
- if (!ssid)
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(connection, &ssid, NULL))
goto failed;
- ssid_utf8 = _nm_utils_ssid_to_utf8(ssid);
-
_LOGI(LOGD_DEVICE | LOGD_WIFI,
"Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Connected to '%s'.",
- ssid_utf8);
+ ssid);
nm_device_activate_schedule_stage3_ip_config_start(device);
return;
failed:
- /* Call Disconnect to make sure IWD's autoconnect is disabled */
- cleanup_association_attempt(self, TRUE);
+ /* If necessary call Disconnect to make sure IWD's autoconnect is disabled */
+ cleanup_association_attempt(self, disconnect);
- nm_device_queue_state(device, NM_DEVICE_STATE_FAILED, reason);
+ nm_device_state_changed(device, NM_DEVICE_STATE_FAILED, reason);
value = g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
- if (!priv->can_connect && nm_streq0(get_variant_state(value), "disconnected")) {
- priv->can_connect = true;
- nm_device_emit_recheck_auto_activate(device);
+ if (!priv->iwd_autoconnect && nm_streq(get_variant_state(value), "disconnected")) {
+ schedule_periodic_scan(self, TRUE);
+
+ if (!priv->nm_autoconnect) {
+ priv->nm_autoconnect = true;
+ nm_device_emit_recheck_auto_activate(device);
+ }
}
g_variant_unref(value);
}
@@ -1466,14 +1663,12 @@ act_start_cb(GObject *source, GAsyncResult *res, gpointer user_data)
NMDevice * device = NM_DEVICE(self);
gs_unref_variant GVariant *variant = NULL;
gs_free_error GError *error = NULL;
- NMSettingWireless * s_wireless;
- GBytes * ssid;
- gs_free char * ssid_utf8 = NULL;
+ gs_free char * ssid = NULL;
variant = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, &error);
if (!variant) {
_LOGE(LOGD_DEVICE | LOGD_WIFI,
- "Activation: (wifi) Network.Connect failed: %s",
+ "Activation: (wifi) {AccessPoint,AdHoc}.Start() failed: %s",
error->message);
if (nm_utils_error_is_cancelled(error))
@@ -1487,21 +1682,16 @@ act_start_cb(GObject *source, GAsyncResult *res, gpointer user_data)
nm_assert(nm_device_get_state(device) == NM_DEVICE_STATE_CONFIG);
- s_wireless = nm_device_get_applied_setting(device, NM_TYPE_SETTING_WIRELESS);
- if (!s_wireless)
- goto error;
-
- ssid = nm_setting_wireless_get_ssid(s_wireless);
- if (!ssid)
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(nm_device_get_applied_connection(device),
+ &ssid,
+ NULL))
goto error;
- ssid_utf8 = _nm_utils_ssid_to_utf8(ssid);
-
_LOGI(LOGD_DEVICE | LOGD_WIFI,
"Activation: (wifi) Stage 2 of 5 (Device Configure) successful. Started '%s'.",
- ssid_utf8);
-
+ ssid);
nm_device_activate_schedule_stage3_ip_config_start(device);
+
return;
error:
@@ -1515,14 +1705,13 @@ error:
static void
act_check_interface(NMDeviceIwd *self)
{
- NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
- NMDevice * device = NM_DEVICE(self);
- NMSettingWireless * s_wireless;
- NMSettingWirelessSecurity *s_wireless_sec;
- GDBusProxy * proxy = NULL;
- GBytes * ssid;
- gs_free char * ssid_utf8 = NULL;
- const char * mode;
+ NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMDevice * device = NM_DEVICE(self);
+ NMSettingWireless * s_wireless;
+ GDBusProxy * proxy = NULL;
+ gs_free char * ssid = NULL;
+ const char * mode;
+ NMIwdNetworkSecurity security;
if (!priv->act_mode_switch)
return;
@@ -1544,44 +1733,46 @@ act_check_interface(NMDeviceIwd *self)
if (!NM_IN_SET(nm_device_get_state(device), NM_DEVICE_STATE_CONFIG))
return;
- ssid = nm_setting_wireless_get_ssid(s_wireless);
- if (!ssid)
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(nm_device_get_applied_connection(device),
+ &ssid,
+ &security))
goto failed;
- ssid_utf8 = _nm_utils_ssid_to_utf8(ssid);
-
- s_wireless_sec = (NMSettingWirelessSecurity *) nm_device_get_applied_setting(
- device,
- NM_TYPE_SETTING_WIRELESS_SECURITY);
-
- if (!s_wireless_sec) {
+ if (security == NM_IWD_NETWORK_SECURITY_NONE) {
g_dbus_proxy_call(proxy,
"StartOpen",
- g_variant_new("(s)", ssid_utf8),
+ g_variant_new("(s)", ssid),
G_DBUS_CALL_FLAGS_NONE,
G_MAXINT,
priv->cancellable,
act_start_cb,
self);
- } else {
- const char *psk = nm_setting_wireless_security_get_psk(s_wireless_sec);
+ } else if (security == NM_IWD_NETWORK_SECURITY_PSK) {
+ NMSettingWirelessSecurity *s_wireless_sec;
+ const char * psk;
+
+ s_wireless_sec = (NMSettingWirelessSecurity *) nm_device_get_applied_setting(
+ device,
+ NM_TYPE_SETTING_WIRELESS_SECURITY);
+ psk = nm_setting_wireless_security_get_psk(s_wireless_sec);
if (!psk) {
- _LOGE(LOGD_DEVICE | LOGD_WIFI, "Activation: (wifi) No PSK for '%s'.", ssid_utf8);
+ _LOGE(LOGD_DEVICE | LOGD_WIFI, "Activation: (wifi) No PSK for '%s'.", ssid);
goto failed;
}
g_dbus_proxy_call(proxy,
"Start",
- g_variant_new("(ss)", ssid_utf8, psk),
+ g_variant_new("(ss)", ssid, psk),
G_DBUS_CALL_FLAGS_NONE,
G_MAXINT,
priv->cancellable,
act_start_cb,
self);
- }
+ } else
+ goto failed;
- _LOGD(LOGD_DEVICE | LOGD_WIFI, "Activation: (wifi) Called Start('%s').", ssid_utf8);
+ _LOGD(LOGD_DEVICE | LOGD_WIFI, "Activation: (wifi) Called Start('%s').", ssid);
return;
failed:
@@ -1718,6 +1909,237 @@ set_powered(NMDeviceIwd *self, gboolean powered)
/*****************************************************************************/
+static NMWifiAP *
+find_ap_by_supplicant_path(NMDeviceIwd *self, const NMRefString *path)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMWifiAP * tmp;
+
+ c_list_for_each_entry (tmp, &priv->aps_lst_head, aps_lst)
+ if (nm_wifi_ap_get_supplicant_path(tmp) == path)
+ return tmp;
+
+ return NULL;
+}
+
+static void
+assumed_connection_state_changed(NMActiveConnection *active, GParamSpec *pspec, NMDeviceIwd *self)
+{
+ NMSettingsConnection * sett_conn = nm_active_connection_get_settings_connection(active);
+ NMActiveConnectionState state = nm_active_connection_get_state(active);
+
+ /* Delete the temporary connection created for an external IWD connection
+ * (triggered by somebody outside of NM, be it IWD autoconnect or a
+ * parallel client), unless it's been referenced by a Known Network
+ * object since, which would remove the EXTERNAL flag.
+ *
+ * Note we can't do this too early, e.g. at the same time that we're
+ * setting the device state to FAILED or DISCONNECTING because the
+ * connection shouldn't disappear while it's still being used. We do
+ * this on the connection's transition to DEACTIVATED same as as
+ * NMManager does for external activations.
+ */
+ if (state != NM_ACTIVE_CONNECTION_STATE_DEACTIVATED)
+ return;
+
+ g_signal_handlers_disconnect_by_func(active, assumed_connection_state_changed, NULL);
+
+ if (sett_conn
+ && NM_FLAGS_HAS(nm_settings_connection_get_flags(sett_conn),
+ NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL))
+ nm_settings_connection_delete(sett_conn, FALSE);
+}
+
+static void
+assumed_connection_state_changed_before_managed(NMActiveConnection *active,
+ GParamSpec * pspec,
+ NMDeviceIwd * self)
+{
+ NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMActiveConnectionState state = nm_active_connection_get_state(active);
+ gboolean disconnect;
+
+ if (state != NM_ACTIVE_CONNECTION_STATE_DEACTIVATED)
+ return;
+
+ /* When an assumed connection fails we always get called, even if the
+ * activation hasn't reached PREPARE or CONFIG, e.g. because of a policy
+ * or authorization problem in NMManager. .deactivate would only be
+ * called starting at some stage so we can't rely on that.
+ *
+ * If the error happened before PREPARE (where we set a non-NULL
+ * priv->current_ap) that will mean NM is somehow blocking autoconnect
+ * so we want to call IWD's Station.Disconnect() to block its
+ * autoconnect. If this happens during or after PREPARE, we just
+ * clean up and wait for a new attempt by IWD.
+ *
+ * cleanup_association_attempt will clear priv->assumed_ac, disconnect
+ * this callback from the signal and also send a Disconnect to IWD if
+ * needed.
+ *
+ * Note this function won't be called after IWD transitions to
+ * "connected" (and NMDevice to IP_CONFIG) as we disconnect from the
+ * signal at that point, cleanup_association_attempt() will be
+ * triggered by an IWD state change instead.
+ */
+ disconnect = !priv->current_ap;
+ cleanup_association_attempt(self, disconnect);
+}
+
+static void
+assume_connection(NMDeviceIwd *self, NMWifiAP *ap)
+{
+ NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMSettingsConnection *sett_conn;
+ gs_unref_object NMAuthSubject *subject = NULL;
+ NMActiveConnection * ac;
+ gs_free_error GError *error = NULL;
+
+ /* We can use the .update_connection / nm_device_emit_recheck_assume
+ * API but we can also pass an assumed/external activation type
+ * directly to nm_manager_activate_connection() and skip the
+ * complicated process of creating a matching connection, taking
+ * advantage of the Known Networks pointing directly to a mirror
+ * connection. The only downside seems to be
+ * nm_manager_activate_connection() goes through the extra
+ * authorization.
+ *
+ * However for now we implement a similar behaviour using a normal
+ * "managed" activation. For one, assumed/external
+ * connection state is not reflected in nm_manager_get_state() until
+ * fully activated. Secondly setting the device state to FAILED
+ * is treated as ACTIVATED so we'd have to find another way to signal
+ * that stage2 is failing asynchronously. Thirdly the connection
+ * becomes "managed" only when ACTIVATED but for IWD it's really
+ * managed when IP_CONFIG starts.
+ */
+ sett_conn = nm_iwd_manager_get_ap_mirror_connection(nm_iwd_manager_get(), ap);
+ if (!sett_conn)
+ goto error;
+
+ subject = nm_auth_subject_new_internal();
+ ac = nm_manager_activate_connection(
+ NM_MANAGER_GET,
+ sett_conn,
+ NULL,
+ nm_dbus_object_get_path(NM_DBUS_OBJECT(ap)),
+ NM_DEVICE(self),
+ subject,
+ NM_ACTIVATION_TYPE_MANAGED,
+ NM_ACTIVATION_REASON_ASSUME,
+ NM_ACTIVATION_STATE_FLAG_LIFETIME_BOUND_TO_PROFILE_VISIBILITY,
+ &error);
+
+ if (!ac) {
+ _LOGW(LOGD_WIFI, "Activation: (wifi) assume error: %s", error->message);
+ goto error;
+ }
+
+ /* If no Known Network existed for this AP, we generated a temporary
+ * NMSettingsConnection with the EXTERNAL flag. It is not referenced by
+ * any Known Network objects at this time so we want to delete it if the
+ * IWD connection ends up failing or a later part of the activation fails
+ * before IWD created a Known Network.
+ * Setting the activation type to EXTERNAL would do this by causing
+ * NM_ACTIVATION_STATE_FLAG_EXTERNAL to be set on the NMActiveConnection
+ * but we don't want the connection to be marked EXTERNAL because we
+ * will be assuming the ownership of it in IP_CONFIG or thereabouts.
+ *
+ * This callback stays connected forever while the second one gets
+ * disconnected when we reset the activation type to managed.
+ */
+ g_signal_connect(ac,
+ "notify::" NM_ACTIVE_CONNECTION_STATE,
+ G_CALLBACK(assumed_connection_state_changed),
+ NULL);
+ g_signal_connect(ac,
+ "notify::" NM_ACTIVE_CONNECTION_STATE,
+ G_CALLBACK(assumed_connection_state_changed_before_managed),
+ self);
+ priv->assumed_ac = g_object_ref(ac);
+
+ return;
+
+error:
+ send_disconnect(self);
+
+ if (sett_conn
+ && NM_FLAGS_HAS(nm_settings_connection_get_flags(sett_conn),
+ NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL))
+ nm_settings_connection_delete(sett_conn, FALSE);
+}
+
+static void
+assumed_connection_progress_to_ip_config(NMDeviceIwd *self, gboolean was_postponed)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMDevice * device = NM_DEVICE(self);
+ NMDeviceState dev_state = nm_device_get_state(device);
+
+ wifi_secrets_cancel(self);
+ nm_clear_g_source(&priv->assumed_ac_timeout);
+
+ /* NM takes over the activation from this point on so clear the assumed
+ * activation state and if we were using NM_ACTIVATION_TYPE_ASSUMED or
+ * _EXTERNAL we'd need to reset the activation type to _MANAGED at this
+ * point instead of waiting for the ACTIVATED state (as done in
+ * nm_active_connection_set_state).
+ */
+ cleanup_assumed_connect(self);
+
+ if (dev_state == NM_DEVICE_STATE_NEED_AUTH)
+ nm_device_state_changed(NM_DEVICE(self),
+ NM_DEVICE_STATE_CONFIG,
+ NM_DEVICE_STATE_REASON_NONE);
+
+ /* If stage2 had returned NM_ACT_STAGE_RETURN_POSTPONE, we tell NMDevice
+ * that stage2 is done.
+ */
+ if (was_postponed)
+ nm_device_activate_schedule_stage3_ip_config_start(NM_DEVICE(self));
+}
+
+static void
+initial_check_assume(NMDeviceIwd *self)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ const char * network_path_str;
+ nm_auto_ref_string NMRefString *network_path = NULL;
+ NMWifiAP * ap = NULL;
+ gs_unref_variant GVariant *state_value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+ gs_unref_variant GVariant *cn_value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "ConnectedNetwork");
+
+ if (!NM_IN_STRSET(get_variant_state(state_value), "connecting", "connected", "roaming"))
+ return;
+
+ if (!priv->iwd_autoconnect) {
+ send_disconnect(self);
+ return;
+ }
+
+ if (!cn_value || !g_variant_is_of_type(cn_value, G_VARIANT_TYPE_OBJECT_PATH)) {
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "ConnectedNetwork property not cached or not an object path");
+ return;
+ }
+
+ network_path_str = g_variant_get_string(cn_value, NULL);
+ network_path = nm_ref_string_new(network_path_str);
+ ap = find_ap_by_supplicant_path(self, network_path);
+
+ if (!ap) {
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "ConnectedNetwork points to an unknown Network %s",
+ network_path_str);
+ return;
+ }
+
+ _LOGD(LOGD_DEVICE | LOGD_WIFI, "assuming connection in initial_check_assume");
+ assume_connection(self, ap);
+}
+
static NMActStageReturn
act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
{
@@ -1740,9 +2162,9 @@ act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
s_wireless = nm_connection_get_setting_wireless(connection);
g_return_val_if_fail(s_wireless, NM_ACT_STAGE_RETURN_FAILURE);
- /* AP mode never uses a specific object or existing scanned AP */
+ /* AP, Ad-Hoc modes never use a specific object or existing scanned AP */
mode = nm_setting_wireless_get_mode(s_wireless);
- if (nm_streq0(mode, NM_SETTING_WIRELESS_MODE_AP))
+ if (NM_IN_STRSET(mode, NM_SETTING_WIRELESS_MODE_AP, NM_SETTING_WIRELESS_MODE_ADHOC))
goto add_new;
ap_path = nm_active_connection_get_specific_object(NM_ACTIVE_CONNECTION(req));
@@ -1760,14 +2182,16 @@ act_stage1_prepare(NMDevice *device, NMDeviceStateReason *out_failure_reason)
return NM_ACT_STAGE_RETURN_SUCCESS;
}
- if (nm_streq0(mode, NM_SETTING_WIRELESS_MODE_INFRA)) {
- /* Hidden networks not supported at this time */
+ /* In infrastructure mode the specific object should be set by now except
+ * for a first-time connection to a hidden network. If a hidden network is
+ * a Known Network it should still have been in the AP list.
+ */
+ if (!nm_setting_wireless_get_hidden(s_wireless) || is_connection_known_network(connection))
return NM_ACT_STAGE_RETURN_FAILURE;
- }
add_new:
/* If the user is trying to connect to an AP that NM doesn't yet know about
- * (hidden network or something) or starting a Hotspot, create an fake AP
+ * (hidden network or something) or starting a Hotspot, create a fake AP
* from the security settings in the connection. This "fake" AP gets used
* until the real one is found in the scan list (Ad-Hoc or Hidden), or until
* the device is deactivated (Ad-Hoc or Hotspot).
@@ -1814,6 +2238,42 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason)
goto out_fail;
}
+ /* With priv->iwd_autoconnect, if we're assuming a connection because
+ * of a state change to "connecting", signal stage 2 is still running.
+ * If "connected" or "roaming", we can go right to the IP_CONFIG state
+ * and there's nothing left to do in CONFIG.
+ * If we're assuming the connection because of an agent request we
+ * switch to NEED_AUTH and actually send the request now that we
+ * have an activation request.
+ *
+ * This all assumes ConnectedNetwork hasn't changed.
+ */
+ if (priv->assumed_ac) {
+ gboolean result;
+
+ if (!priv->pending_agent_request) {
+ gs_unref_variant GVariant *value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+
+ if (nm_streq(get_variant_state(value), "connecting")) {
+ return NM_ACT_STAGE_RETURN_POSTPONE;
+ } else {
+ /* This basically forgets that the connection was "assumed"
+ * as we can treat it like any connection triggered by a
+ * Network.Connect() call from now on.
+ */
+ assumed_connection_progress_to_ip_config(self, FALSE);
+ return NM_ACT_STAGE_RETURN_SUCCESS;
+ }
+ }
+
+ result = nm_device_iwd_agent_query(self, priv->pending_agent_request);
+ g_clear_object(&priv->pending_agent_request);
+ nm_assert(result);
+
+ return NM_ACT_STAGE_RETURN_POSTPONE;
+ }
+
/* 802.1x networks that are not IWD Known Networks will definitely
* fail, for other combinations we will let the Connect call fail
* or ask us for any missing secrets through the Agent.
@@ -1828,15 +2288,28 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason)
goto out_fail;
}
- if (!is_connection_known_network(connection)
- && nm_setting_wireless_get_hidden(s_wireless)) {
- gs_free char *ssid_str = NULL;
+ priv->secrets_failed = FALSE;
+
+ if (nm_wifi_ap_get_fake(ap)) {
+ gs_free char *ssid = NULL;
+
+ if (!nm_setting_wireless_get_hidden(s_wireless)) {
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "Activation: (wifi) target network not known to IWD but is not "
+ "marked hidden");
+ NM_SET_OUT(out_failure_reason, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
+ goto out_fail;
+ }
+
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(connection, &ssid, NULL)) {
+ NM_SET_OUT(out_failure_reason, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
+ goto out_fail;
+ }
/* Use Station.ConnectHiddenNetwork method instead of Network proxy. */
- ssid_str = _nm_utils_ssid_to_utf8(nm_setting_wireless_get_ssid(s_wireless));
g_dbus_proxy_call(priv->dbus_station_proxy,
"ConnectHiddenNetwork",
- g_variant_new("(s)", ssid_str),
+ g_variant_new("(s)", ssid),
G_DBUS_CALL_FLAGS_NONE,
G_MAXINT,
priv->cancellable,
@@ -1845,14 +2318,6 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason)
return NM_ACT_STAGE_RETURN_POSTPONE;
}
- if (!nm_wifi_ap_get_supplicant_path(ap)) {
- _LOGW(LOGD_DEVICE | LOGD_WIFI,
- "Activation: (wifi) network is provisioned but dbus supplicant path for AP "
- "unknown");
- NM_SET_OUT(out_failure_reason, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
- goto out_fail;
- }
-
network_proxy = nm_iwd_manager_get_dbus_interface(
nm_iwd_manager_get(),
nm_ref_string_get_str(nm_wifi_ap_get_supplicant_path(ap)),
@@ -1951,31 +2416,26 @@ static void
schedule_periodic_scan(NMDeviceIwd *self, gboolean initial_scan)
{
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
- GVariant * value;
- gboolean disconnected = TRUE;
guint interval;
- if (priv->can_scan) {
- value = g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
- disconnected = nm_streq0(get_variant_state(value), "disconnected");
- g_variant_unref(value);
- }
-
- /* Start scan immediately after a disconnect, mode change or
- * device UP, otherwise wait 10 seconds. When connected, update
- * AP list mainly on UI requests.
+ /* Automatically start a scan after a disconnect, mode change or device UP,
+ * otherwise scan periodically every 10 seconds if needed for NM's
+ * autoconnect. There's no need to scan When using IWD's autoconnect or
+ * when connected, we update the AP list on UI requests.
*
- * (initial_scan && disconnected) override priv->scanning below
- * because of an IWD quirk where a device will often be in the
- * autoconnect state and scanning at the time of our initial_scan,
- * but our logic will then send it a Disconnect() causing IWD to
- * exit autoconnect and interrupt the ongoing scan, meaning that
- * we still want a new scan ASAP.
+ * (initial_scan && disconnected && !priv->iwd_autoconnect) override
+ * priv->scanning below because of an IWD quirk where a device will often
+ * be in the autoconnect state and scanning at the time of our initial_scan,
+ * but our logic will then send it a Disconnect() causing IWD to exit
+ * autoconnect and interrupt the ongoing scan, meaning that we still want
+ * a new scan ASAP.
*/
- if (!priv->can_scan || !disconnected || priv->scan_requested || priv->scanning)
+ if (!priv->can_scan || priv->scan_requested || priv->current_ap || priv->iwd_autoconnect)
interval = -1;
- else if (initial_scan)
+ else if (initial_scan && priv->scanning)
interval = 0;
+ else if (priv->scanning)
+ interval = -1;
else if (!priv->periodic_scan_id)
interval = 10;
else
@@ -1997,7 +2457,8 @@ set_can_scan(NMDeviceIwd *self, gboolean can_scan)
priv->can_scan = can_scan;
- schedule_periodic_scan(self, TRUE);
+ if (!priv->iwd_autoconnect)
+ schedule_periodic_scan(self, TRUE);
}
static void
@@ -2008,6 +2469,8 @@ device_state_changed(NMDevice * device,
{
NMDeviceIwd * self = NM_DEVICE_IWD(device);
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMSettingWireless * s_wireless;
+ const char * mode;
switch (new_state) {
case NM_DEVICE_STATE_UNMANAGED:
@@ -2024,15 +2487,22 @@ device_state_changed(NMDevice * device,
NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
}
break;
- case NM_DEVICE_STATE_NEED_AUTH:
- break;
- case NM_DEVICE_STATE_IP_CHECK:
- break;
- case NM_DEVICE_STATE_ACTIVATED:
- break;
- case NM_DEVICE_STATE_FAILED:
- break;
case NM_DEVICE_STATE_DISCONNECTED:
+ if (old_state == NM_DEVICE_STATE_UNAVAILABLE)
+ initial_check_assume(self);
+ break;
+ case NM_DEVICE_STATE_IP_CONFIG:
+ s_wireless =
+ (NMSettingWireless *) nm_device_get_applied_setting(device, NM_TYPE_SETTING_WIRELESS);
+ mode = nm_setting_wireless_get_mode(s_wireless);
+ if (!priv->periodic_update_id
+ && NM_IN_STRSET(mode,
+ NULL,
+ NM_SETTING_WIRELESS_MODE_INFRA,
+ NM_SETTING_WIRELESS_MODE_ADHOC)) {
+ priv->periodic_update_id = g_timeout_add_seconds(6, periodic_update_cb, self);
+ periodic_update(self);
+ }
break;
default:
break;
@@ -2128,7 +2598,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
break;
case PROP_BITRATE:
- g_value_set_uint(value, 65000);
+ g_value_set_uint(value, priv->rate);
break;
case PROP_CAPABILITIES:
g_value_set_uint(value, priv->capabilities);
@@ -2164,51 +2634,149 @@ state_changed(NMDeviceIwd *self, const char *new_state)
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
NMDevice * device = NM_DEVICE(self);
NMDeviceState dev_state = nm_device_get_state(device);
+ gboolean nm_connection = priv->current_ap || priv->assumed_ac;
gboolean iwd_connection = FALSE;
- gboolean can_connect = priv->can_connect;
+ NMWifiAP * ap = NULL;
+ gboolean can_connect = priv->nm_autoconnect;
_LOGI(LOGD_DEVICE | LOGD_WIFI, "new IWD device state is %s", new_state);
- if (dev_state >= NM_DEVICE_STATE_CONFIG && dev_state <= NM_DEVICE_STATE_ACTIVATED)
- iwd_connection = TRUE;
+ if (NM_IN_STRSET(new_state, "connecting", "connected", "roaming")) {
+ gs_unref_variant GVariant *value = NULL;
+ const char * network_path_str;
+ nm_auto_ref_string NMRefString *network_path = NULL;
+
+ value = g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "ConnectedNetwork");
+ if (!value || !g_variant_is_of_type(value, G_VARIANT_TYPE_OBJECT_PATH)) {
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "ConnectedNetwork property not cached or not an object path");
+ return;
+ }
+
+ iwd_connection = TRUE;
+ network_path_str = g_variant_get_string(value, NULL);
+ network_path = nm_ref_string_new(network_path_str);
+ ap = find_ap_by_supplicant_path(self, network_path);
+
+ if (!ap) {
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "ConnectedNetwork points to an unknown Network %s",
+ network_path_str);
+ return;
+ }
+ }
/* Don't allow scanning while connecting, disconnecting or roaming */
set_can_scan(self, NM_IN_STRSET(new_state, "connected", "disconnected"));
- priv->can_connect = FALSE;
+ priv->nm_autoconnect = FALSE;
- if (NM_IN_STRSET(new_state, "connecting", "connected", "roaming")) {
+ if (nm_connection && iwd_connection && priv->current_ap && ap != priv->current_ap) {
+ gboolean switch_ap = priv->iwd_autoconnect && priv->assumed_ac;
+
+ _LOGW(LOGD_DEVICE | LOGD_WIFI,
+ "IWD is connecting to the wrong AP, %s activation",
+ switch_ap ? "replacing" : "aborting");
+ cleanup_association_attempt(self, !switch_ap);
+ nm_device_state_changed(device,
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT);
+
+ if (switch_ap)
+ assume_connection(self, ap);
+ return;
+ }
+
+ if (priv->iwd_autoconnect && iwd_connection) {
+ if (dev_state < NM_DEVICE_STATE_DISCONNECTED)
+ return;
+
+ /* If IWD is in any state other than disconnected and the NMDevice is
+ * in DISCONNECTED then someone else, possibly IWD's autoconnect, has
+ * commanded an action and we need to update our NMDevice's state to
+ * match, including finding the NMSettingsConnection and NMWifiAP
+ * matching the network pointed to by Station.ConnectedNetwork.
+ *
+ * If IWD is in the connected state and we're in CONFIG, we only have
+ * to signal that the existing connection request has advanced to a new
+ * state. If the connection request came from NM, we must have used
+ * Network.Connect() so that method call's callback will update the
+ * connection request, otherwise we do it here.
+ *
+ * If IWD is disconnecting or just disconnected, the common code below
+ * (independent from priv->iwd_autoconnect) will handle this case.
+ * If IWD is disconnecting but we never saw a connection request in the
+ * first place (maybe because we're only startig up) we won't be
+ * setting up an NMActiveConnection just to put the NMDevice in the
+ * DEACTIVATING state and we ignore this case.
+ *
+ * If IWD was in the disconnected state and transitioned to
+ * "connecting" but we were already in NEED_AUTH because we handled an
+ * agent query -- IWD normally stays in "disconnected" until it has all
+ * the secrets -- we record this fact and remain in NEED_AUTH.
+ */
+ if (!nm_connection) {
+ _LOGD(LOGD_DEVICE | LOGD_WIFI, "This is a new connection, 'assuming' it");
+ assume_connection(self, ap);
+ return;
+ }
+
+ if (priv->assumed_ac && dev_state >= NM_DEVICE_STATE_PREPARE
+ && dev_state < NM_DEVICE_STATE_IP_CONFIG
+ && NM_IN_STRSET(new_state, "connected", "roaming")) {
+ _LOGD(LOGD_DEVICE | LOGD_WIFI, "Updating assumed activation state");
+ assumed_connection_progress_to_ip_config(self, TRUE);
+ return;
+ }
+
+ if (priv->assumed_ac) {
+ _LOGD(LOGD_DEVICE | LOGD_WIFI, "Clearing assumed activation timeout");
+ nm_clear_g_source(&priv->assumed_ac_timeout);
+ return;
+ }
+ } else if (!priv->iwd_autoconnect && iwd_connection) {
/* If we were connecting, do nothing, the confirmation of
* a connection success is handled in the Device.Connect
* method return callback. Otherwise, IWD must have connected
* without Network Manager's will so for simplicity force a
* disconnect.
*/
- if (iwd_connection)
+ if (nm_connection)
return;
- _LOGW(LOGD_DEVICE | LOGD_WIFI, "Unsolicited connection success, asking IWD to disconnect");
+ _LOGW(LOGD_DEVICE | LOGD_WIFI, "Unsolicited connection, asking IWD to disconnect");
send_disconnect(self);
} else if (NM_IN_STRSET(new_state, "disconnecting", "disconnected")) {
- /* Call Disconnect on the IWD device object to make sure it
- * disables its own autoconnect.
+ /* If necessary, call Disconnect on the IWD device object to make sure
+ * it disables its autoconnect.
*/
- send_disconnect(self);
+ if ((!priv->iwd_autoconnect
+ || nm_device_autoconnect_blocked_get(device, NM_DEVICE_AUTOCONNECT_BLOCKED_ALL))
+ && !priv->wifi_secrets_id && !priv->pending_agent_request)
+ send_disconnect(self);
/*
* If IWD is still handling the Connect call, let our Connect
* callback for the dbus method handle the failure. The main
- * reason we can't handle the failure here is because the method
- * callback will have more information on the specific failure
- * reason.
+ * reason we don't want to handle the failure here is because the
+ * method callback will have more information on the specific
+ * failure reason.
+ *
+ * If IWD is handling an autoconnect agent call, let the agent's
+ * Cancel() handler take care of this.
*/
- if (NM_IN_SET(dev_state, NM_DEVICE_STATE_CONFIG, NM_DEVICE_STATE_NEED_AUTH))
+ if (NM_IN_SET(dev_state, NM_DEVICE_STATE_CONFIG, NM_DEVICE_STATE_NEED_AUTH)
+ && !priv->assumed_ac)
+ return;
+ if (NM_IN_SET(dev_state, NM_DEVICE_STATE_NEED_AUTH) && priv->assumed_ac)
return;
- if (iwd_connection)
+ if (nm_connection) {
+ cleanup_association_attempt(self, FALSE);
nm_device_state_changed(device,
NM_DEVICE_STATE_FAILED,
NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT);
+ }
} else if (!nm_streq(new_state, "unknown")) {
_LOGE(LOGD_WIFI, "State %s unknown", new_state);
return;
@@ -2217,8 +2785,8 @@ state_changed(NMDeviceIwd *self, const char *new_state)
/* Don't allow new connection until iwd exits disconnecting and no
* Connect callback is pending.
*/
- if (NM_IN_STRSET(new_state, "disconnected")) {
- priv->can_connect = TRUE;
+ if (!priv->iwd_autoconnect && NM_IN_STRSET(new_state, "disconnected")) {
+ priv->nm_autoconnect = TRUE;
if (!can_connect)
nm_device_emit_recheck_auto_activate(device);
}
@@ -2239,7 +2807,7 @@ scanning_changed(NMDeviceIwd *self, gboolean new_scanning)
if (!priv->scanning) {
update_aps(self);
- if (!priv->scan_requested)
+ if (!priv->scan_requested && !priv->iwd_autoconnect)
schedule_periodic_scan(self, FALSE);
}
}
@@ -2281,7 +2849,6 @@ powered_changed(NMDeviceIwd *self, gboolean new_powered)
{
NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
GDBusInterface * interface;
- GVariant * value;
nm_device_queue_recheck_available(NM_DEVICE(self),
NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE,
@@ -2340,24 +2907,11 @@ powered_changed(NMDeviceIwd *self, gboolean new_powered)
if (new_powered && !priv->dbus_ap_proxy && !priv->dbus_adhoc_proxy) {
interface = g_dbus_object_get_interface(priv->dbus_obj, NM_IWD_STATION_INTERFACE);
if (!interface) {
- /* No Station interface on the device object. Check if the
- * "State" property is present on the Device interface, that
- * would mean we're dealing with an IWD version from before the
- * Device/Station split (0.7 or earlier) and we can easily
- * handle that by making priv->dbus_device_proxy and
- * priv->dbus_station_proxy both point at the Device interface.
- */
- value = g_dbus_proxy_get_cached_property(priv->dbus_device_proxy, "State");
- if (value) {
- g_variant_unref(value);
- interface = g_object_ref(G_DBUS_INTERFACE(priv->dbus_device_proxy));
- } else {
- _LOGE(LOGD_WIFI,
- "Interface %s not found on obj %s",
- NM_IWD_STATION_INTERFACE,
- g_dbus_object_get_object_path(priv->dbus_obj));
- interface = NULL;
- }
+ _LOGE(LOGD_WIFI,
+ "Interface %s not found on obj %s",
+ NM_IWD_STATION_INTERFACE,
+ g_dbus_object_get_object_path(priv->dbus_obj));
+ interface = NULL;
}
} else
interface = NULL;
@@ -2370,6 +2924,8 @@ powered_changed(NMDeviceIwd *self, gboolean new_powered)
}
if (interface) {
+ GVariant *value;
+
priv->dbus_station_proxy = G_DBUS_PROXY(interface);
g_signal_connect(priv->dbus_station_proxy,
"g-properties-changed",
@@ -2385,11 +2941,21 @@ powered_changed(NMDeviceIwd *self, gboolean new_powered)
g_variant_unref(value);
update_aps(self);
+
+ /* When a device is brought UP in station mode, including after a mode
+ * switch, IWD re-enables autoconnect. This is unlike NM's autoconnect
+ * where a mode change doesn't interfere with the
+ * BLOCKED_MANUAL_DISCONNECT flag.
+ */
+ if (priv->iwd_autoconnect) {
+ nm_device_autoconnect_blocked_unset(NM_DEVICE(self),
+ NM_DEVICE_AUTOCONNECT_BLOCKED_INTERNAL);
+ }
} else {
set_can_scan(self, FALSE);
priv->scanning = FALSE;
priv->scan_requested = FALSE;
- priv->can_connect = FALSE;
+ priv->nm_autoconnect = FALSE;
cleanup_association_attempt(self, FALSE);
remove_all_aps(self);
}
@@ -2408,6 +2974,36 @@ device_properties_changed(GDBusProxy *proxy,
powered_changed(self, new_bool);
}
+static void
+config_changed(NMConfig * config,
+ NMConfigData * config_data,
+ NMConfigChangeFlags changes,
+ NMConfigData * old_data,
+ NMDeviceIwd * self)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ gboolean old_iwd_ac = priv->iwd_autoconnect;
+
+ priv->iwd_autoconnect =
+ nm_config_data_get_device_config_boolean(config_data,
+ NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_IWD_AUTOCONNECT,
+ NM_DEVICE(self),
+ TRUE,
+ TRUE);
+
+ if (old_iwd_ac != priv->iwd_autoconnect && priv->dbus_station_proxy && !priv->current_ap) {
+ gs_unref_variant GVariant *value = NULL;
+
+ if (!priv->iwd_autoconnect
+ && !nm_device_autoconnect_blocked_get(NM_DEVICE(self),
+ NM_DEVICE_AUTOCONNECT_BLOCKED_ALL))
+ send_disconnect(self);
+
+ value = g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+ state_changed(self, get_variant_state(value));
+ }
+}
+
void
nm_device_iwd_set_dbus_object(NMDeviceIwd *self, GDBusObject *object)
{
@@ -2432,6 +3028,8 @@ nm_device_iwd_set_dbus_object(NMDeviceIwd *self, GDBusObject *object)
powered_changed(self, FALSE);
priv->act_mode_switch = FALSE;
+
+ g_signal_handlers_disconnect_by_func(nm_config_get(), config_changed, self);
}
if (!object)
@@ -2494,6 +3092,13 @@ nm_device_iwd_set_dbus_object(NMDeviceIwd *self, GDBusObject *object)
_notify(self, PROP_CAPABILITIES);
}
+ /* Update iwd_autoconnect before any state_changed call */
+ g_signal_connect(nm_config_get(),
+ NM_CONFIG_SIGNAL_CONFIG_CHANGED,
+ G_CALLBACK(config_changed),
+ self);
+ config_changed(NULL, NM_CONFIG_GET_DATA, 0, NULL, self);
+
g_variant_unref(value);
value = g_dbus_proxy_get_cached_property(priv->dbus_device_proxy, "Powered");
powered = get_variant_boolean(value, "Powered");
@@ -2513,24 +3118,127 @@ error:
gboolean
nm_device_iwd_agent_query(NMDeviceIwd *self, GDBusMethodInvocation *invocation)
{
- NMActRequest * req;
+ NMDevice * device = NM_DEVICE(self);
+ NMDeviceIwdPrivate * priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMDeviceState state = nm_device_get_state(device);
const char * setting_name;
const char * setting_key;
gboolean replied;
+ NMWifiAP * ap;
NMSecretAgentGetSecretsFlags get_secret_flags =
NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION;
+ nm_auto_ref_string NMRefString *network_path = NULL;
- req = nm_device_get_act_request(NM_DEVICE(self));
- if (!req)
+ if (!invocation) {
+ gs_unref_variant GVariant *value =
+ g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+ gboolean disconnect;
+
+ if (!priv->wifi_secrets_id && !priv->pending_agent_request)
+ return FALSE;
+
+ _LOGI(LOGD_WIFI, "IWD agent request is being cancelled");
+ wifi_secrets_cancel(self);
+
+ if (state == NM_DEVICE_STATE_NEED_AUTH)
+ nm_device_state_changed(device, NM_DEVICE_STATE_CONFIG, NM_DEVICE_STATE_REASON_NONE);
+
+ /* The secrets request is being cancelled. If we don't have an assumed
+ * connection than we've probably called Network.Connect and that method
+ * call's callback is going to handle the failure. And if the state was
+ * not "disconnected" then let the state change handler process the
+ * failure.
+ */
+ if (!priv->assumed_ac)
+ return TRUE;
+
+ if (!nm_streq(get_variant_state(value), "disconnected"))
+ return TRUE;
+
+ disconnect = nm_device_autoconnect_blocked_get(device, NM_DEVICE_AUTOCONNECT_BLOCKED_ALL);
+ cleanup_association_attempt(self, disconnect);
+ nm_device_state_changed(device,
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
+ return TRUE;
+ }
+
+ if (state > NM_DEVICE_STATE_CONFIG && state < NM_DEVICE_STATE_DEACTIVATING) {
+ _LOGW(LOGD_WIFI, "Can't handle the IWD agent request in current device state");
+ return FALSE;
+ }
+
+ if (priv->wifi_secrets_id || priv->pending_agent_request) {
+ _LOGW(LOGD_WIFI, "There's already a pending agent request for this device");
return FALSE;
+ }
+
+ network_path = nm_ref_string_new(get_agent_request_network_path(invocation));
+ ap = find_ap_by_supplicant_path(self, network_path);
+ if (!ap) {
+ _LOGW(LOGD_WIFI, "IWD Network object not found for the agent request");
+ return FALSE;
+ }
+
+ if (priv->assumed_ac) {
+ const char *ac_ap_path = nm_active_connection_get_specific_object(priv->assumed_ac);
+
+ if (!nm_streq(ac_ap_path, nm_dbus_object_get_path(NM_DBUS_OBJECT(ap)))) {
+ _LOGW(LOGD_WIFI,
+ "Dropping an existing assumed connection to create a new one based on the IWD "
+ "agent request network parameter");
+
+ if (priv->current_ap)
+ nm_device_state_changed(device,
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
+
+ cleanup_association_attempt(self, FALSE);
+ priv->pending_agent_request = g_object_ref(invocation);
+ assume_connection(self, ap);
+ return TRUE;
+ }
+
+ if (state != NM_DEVICE_STATE_CONFIG) {
+ _LOGI(LOGD_WIFI, "IWD agent request deferred until in CONFIG");
+ priv->pending_agent_request = g_object_ref(invocation);
+ return TRUE;
+ }
+
+ /* Otherwise handle as usual */
+ } else if (!priv->current_ap) {
+ _LOGI(LOGD_WIFI, "IWD is asking for secrets without explicit connect request");
+
+ if (priv->iwd_autoconnect) {
+ priv->pending_agent_request = g_object_ref(invocation);
+ assume_connection(self, ap);
+ return TRUE;
+ }
+
+ send_disconnect(self);
+ return FALSE;
+ } else if (priv->current_ap) {
+ if (priv->current_ap != ap) {
+ _LOGW(LOGD_WIFI, "IWD agent request for a wrong network object");
+ cleanup_association_attempt(self, TRUE);
+ nm_device_state_changed(device,
+ NM_DEVICE_STATE_FAILED,
+ NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED);
+ return FALSE;
+ }
+
+ /* Otherwise handle as usual */
+ }
if (!try_reply_agent_request(self,
- nm_act_request_get_applied_connection(req),
+ nm_device_get_applied_connection(device),
invocation,
&setting_name,
&setting_key,
- &replied))
+ &replied)) {
+ priv->secrets_failed = TRUE;
return FALSE;
+ }
if (replied)
return TRUE;
@@ -2543,17 +3251,83 @@ nm_device_iwd_agent_query(NMDeviceIwd *self, GDBusMethodInvocation *invocation)
* Connection timestamp is set after activation or after first
* activation failure (to 0).
*/
- if (nm_settings_connection_get_timestamp(nm_act_request_get_settings_connection(req), NULL))
+ if (nm_settings_connection_get_timestamp(nm_device_get_settings_connection(device), NULL))
get_secret_flags |= NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW;
- nm_device_state_changed(NM_DEVICE(self),
- NM_DEVICE_STATE_NEED_AUTH,
- NM_DEVICE_STATE_REASON_NO_SECRETS);
+ nm_device_state_changed(device, NM_DEVICE_STATE_NEED_AUTH, NM_DEVICE_STATE_REASON_NO_SECRETS);
wifi_secrets_get_one(self, setting_name, get_secret_flags, setting_key, invocation);
return TRUE;
}
+void
+nm_device_iwd_network_add_remove(NMDeviceIwd *self, GDBusProxy *network, bool add)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ NMWifiAP * ap = NULL;
+ bool recheck;
+ nm_auto_ref_string NMRefString *bss_path = NULL;
+
+ bss_path = nm_ref_string_new(g_dbus_proxy_get_object_path(network));
+ ap = find_ap_by_supplicant_path(self, bss_path);
+
+ /* We could schedule an update_aps(self) idle call here but up to IWD 1.9
+ * when a hidden network connection is attempted, that network is initially
+ * only added as a Network object but not shown in GetOrderedNetworks()
+ * return values, and for some corner case scenarios it's beneficial to
+ * have that Network reflected in our ap list so that we don't attempt
+ * calling ConnectHiddenNetwork() on it, as that will fail in 1.9. But we
+ * can skip recheck-available if we're currently scanning or in the middle
+ * of a GetOrderedNetworks() call as that will trigger the recheck too.
+ */
+ recheck = priv->enabled && !priv->scanning && !priv->networks_requested;
+
+ if (!add) {
+ if (ap) {
+ ap_add_remove(self, FALSE, ap, recheck);
+ priv->networks_changed |= !recheck;
+ }
+
+ return;
+ }
+
+ if (!ap) {
+ ap = ap_from_network(self,
+ network,
+ bss_path,
+ nm_utils_get_monotonic_timestamp_msec(),
+ -10000);
+ if (!ap)
+ return;
+
+ ap_add_remove(self, TRUE, ap, recheck);
+ g_object_unref(ap);
+ priv->networks_changed |= !recheck;
+ return;
+ }
+}
+
+static void
+autoconnect_changed(NMDevice *device, GParamSpec *pspec, NMDeviceIwd *self)
+{
+ NMDeviceIwdPrivate *priv = NM_DEVICE_IWD_GET_PRIVATE(self);
+ gs_unref_variant GVariant *value = NULL;
+
+ /* Note IWD normally remains in "disconnected" during a secret request
+ * and we don't want to interrupt it by calling Station.Disconnect().
+ */
+ if (!priv->dbus_station_proxy || !priv->iwd_autoconnect
+ || !nm_device_autoconnect_blocked_get(device, NM_DEVICE_AUTOCONNECT_BLOCKED_ALL)
+ || priv->wifi_secrets_id || priv->pending_agent_request)
+ return;
+
+ value = g_dbus_proxy_get_cached_property(priv->dbus_station_proxy, "State");
+ if (!nm_streq(get_variant_state(value), "disconnected"))
+ return;
+
+ send_disconnect(self);
+}
+
/*****************************************************************************/
static const char *
@@ -2573,6 +3347,8 @@ nm_device_iwd_init(NMDeviceIwd *self)
c_list_init(&priv->aps_lst_head);
+ g_signal_connect(self, "notify::" NM_DEVICE_AUTOCONNECT, G_CALLBACK(autoconnect_changed), self);
+
/* Make sure the manager is running */
(void) nm_iwd_manager_get();
}
@@ -2602,6 +3378,7 @@ dispose(GObject *object)
nm_clear_g_cancellable(&priv->cancellable);
+ g_signal_handlers_disconnect_by_func(self, autoconnect_changed, self);
nm_device_iwd_set_dbus_object(self, NULL);
G_OBJECT_CLASS(nm_device_iwd_parent_class)->dispose(object);
@@ -2643,6 +3420,13 @@ nm_device_iwd_class_init(NMDeviceIwdClass *klass)
device_class->deactivate_async = deactivate_async;
device_class->can_reapply_change = can_reapply_change;
+ /* Stage 1 needed only for the set_current_ap() call. Stage 2 is
+ * needed if we're assuming a connection still in the "connecting"
+ * state or on an agent request.
+ */
+ device_class->act_stage1_prepare_also_for_external_or_assume = TRUE;
+ device_class->act_stage2_config_also_for_external_or_assume = TRUE;
+
device_class->state_changed = device_state_changed;
obj_properties[PROP_MODE] = g_param_spec_uint(NM_DEVICE_IWD_MODE,
diff --git a/src/devices/wifi/nm-device-iwd.h b/src/devices/wifi/nm-device-iwd.h
index e364beaf3d..d4bf5dd61d 100644
--- a/src/devices/wifi/nm-device-iwd.h
+++ b/src/devices/wifi/nm-device-iwd.h
@@ -44,4 +44,6 @@ void _nm_device_iwd_request_scan(NMDeviceIwd * self,
GVariant * options,
GDBusMethodInvocation *invocation);
+void nm_device_iwd_network_add_remove(NMDeviceIwd *device, GDBusProxy *network, bool add);
+
#endif /* __NETWORKMANAGER_DEVICE_IWD_H__ */
diff --git a/src/devices/wifi/nm-device-olpc-mesh.c b/src/devices/wifi/nm-device-olpc-mesh.c
index 22e94a6dcc..d3874ff16d 100644
--- a/src/devices/wifi/nm-device-olpc-mesh.c
+++ b/src/devices/wifi/nm-device-olpc-mesh.c
@@ -30,8 +30,8 @@
#include "nm-manager.h"
#include "platform/nm-platform.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceOlpcMesh
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceOlpcMesh);
/*****************************************************************************/
@@ -460,16 +460,16 @@ constructed(GObject *object)
NMDevice *
nm_device_olpc_mesh_new(const char *iface)
{
- return (NMDevice *) g_object_new(NM_TYPE_DEVICE_OLPC_MESH,
- NM_DEVICE_IFACE,
- iface,
- NM_DEVICE_TYPE_DESC,
- "802.11 OLPC Mesh",
- NM_DEVICE_DEVICE_TYPE,
- NM_DEVICE_TYPE_OLPC_MESH,
- NM_DEVICE_LINK_TYPE,
- NM_LINK_TYPE_OLPC_MESH,
- NULL);
+ return g_object_new(NM_TYPE_DEVICE_OLPC_MESH,
+ NM_DEVICE_IFACE,
+ iface,
+ NM_DEVICE_TYPE_DESC,
+ "802.11 OLPC Mesh",
+ NM_DEVICE_DEVICE_TYPE,
+ NM_DEVICE_TYPE_OLPC_MESH,
+ NM_DEVICE_LINK_TYPE,
+ NM_LINK_TYPE_OLPC_MESH,
+ NULL);
}
static void
diff --git a/src/devices/wifi/nm-device-wifi-p2p.c b/src/devices/wifi/nm-device-wifi-p2p.c
index 2e5317fd95..0780d80b34 100644
--- a/src/devices/wifi/nm-device-wifi-p2p.c
+++ b/src/devices/wifi/nm-device-wifi-p2p.c
@@ -27,8 +27,8 @@
#include "platform/nmp-object.h"
#include "settings/nm-settings.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceWifiP2P
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceWifiP2P);
/*****************************************************************************/
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 980916dde3..bbd2b130d8 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -41,8 +41,8 @@
#include "nm-core-internal.h"
#include "nm-config.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceWifi
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceWifi);
#define SCAN_INTERVAL_SEC_MIN 3
#define SCAN_INTERVAL_SEC_STEP 20
@@ -728,6 +728,7 @@ periodic_update(NMDeviceWifi *self)
NMDeviceWifiPrivate *priv;
int ifindex;
guint32 new_rate;
+ int percent;
if (nm_device_get_state(NM_DEVICE(self)) != NM_DEVICE_STATE_ACTIVATED) {
/* BSSID and signal strength have meaningful values only if the device
@@ -757,23 +758,22 @@ periodic_update(NMDeviceWifi *self)
if (ifindex <= 0)
g_return_if_reached();
- if (priv->current_ap) {
- int percent;
-
- percent = nm_platform_wifi_get_quality(nm_device_get_platform(NM_DEVICE(self)), ifindex);
- if (percent >= 0 && percent <= 100) {
- if (nm_wifi_ap_set_strength(priv->current_ap, (gint8) percent)) {
+ if (priv->current_ap
+ && nm_platform_wifi_get_station(nm_device_get_platform(NM_DEVICE(self)),
+ ifindex,
+ NULL,
+ &percent,
+ &new_rate)) {
+ if (nm_wifi_ap_set_strength(priv->current_ap, (gint8) percent)) {
#if NM_MORE_LOGGING
- _ap_dump(self, LOGL_TRACE, priv->current_ap, "updated", 0);
+ _ap_dump(self, LOGL_TRACE, priv->current_ap, "updated", 0);
#endif
- }
}
- }
- new_rate = nm_platform_wifi_get_rate(nm_device_get_platform(NM_DEVICE(self)), ifindex);
- if (new_rate != priv->rate) {
- priv->rate = new_rate;
- _notify(self, PROP_BITRATE);
+ if (new_rate != priv->rate) {
+ priv->rate = new_rate;
+ _notify(self, PROP_BITRATE);
+ }
}
}
@@ -3136,6 +3136,9 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason)
NMSettingWireless * s_wireless;
GError * error = NULL;
guint timeout;
+ NMActRequest * request;
+ NMActiveConnection * master_ac;
+ NMDevice * master;
nm_clear_g_source(&priv->sup_timeout_id);
nm_clear_g_source(&priv->link_timeout_id);
@@ -3209,6 +3212,15 @@ act_stage2_config(NMDevice *device, NMDeviceStateReason *out_failure_reason)
goto out_fail;
}
+ /* Tell the supplicant in which bridge the interface is */
+ if ((request = nm_device_get_act_request(device))
+ && (master_ac = nm_active_connection_get_master(NM_ACTIVE_CONNECTION(request)))
+ && (master = nm_active_connection_get_device(master_ac))
+ && nm_device_get_device_type(master) == NM_DEVICE_TYPE_BRIDGE) {
+ nm_supplicant_interface_set_bridge(priv->sup_iface, nm_device_get_iface(master));
+ } else
+ nm_supplicant_interface_set_bridge(priv->sup_iface, NULL);
+
nm_supplicant_interface_assoc(priv->sup_iface, config, supplicant_iface_assoc_cb, self);
/* Set up a timeout on the association attempt */
@@ -3357,31 +3369,33 @@ activation_success_handler(NMDevice *device)
g_warn_if_fail(priv->current_ap);
if (priv->current_ap) {
if (nm_wifi_ap_get_fake(priv->current_ap)) {
- gboolean ap_changed = FALSE;
+ gboolean ap_changed = FALSE;
+ gboolean update_bssid = !nm_wifi_ap_get_address(priv->current_ap);
+ gboolean update_rate = !nm_wifi_ap_get_max_bitrate(priv->current_ap);
+ NMEtherAddr bssid;
+ guint32 rate;
/* If the activation AP hasn't been seen by the supplicant in a scan
* yet, it will be "fake". This usually happens for Ad-Hoc and
* AP-mode connections. Fill in the details from the device itself
* until the supplicant sends the scan result.
*/
- if (!nm_wifi_ap_get_address(priv->current_ap)) {
- guint8 bssid[ETH_ALEN] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
- gs_free char *bssid_str = NULL;
-
- if (nm_platform_wifi_get_bssid(nm_device_get_platform(device), ifindex, bssid)
- && nm_ethernet_address_is_valid(bssid, ETH_ALEN)) {
- bssid_str = nm_utils_hwaddr_ntoa(bssid, ETH_ALEN);
- ap_changed |= nm_wifi_ap_set_address(priv->current_ap, bssid_str);
- }
- }
if (!nm_wifi_ap_get_freq(priv->current_ap))
ap_changed |= nm_wifi_ap_set_freq(
priv->current_ap,
nm_platform_wifi_get_frequency(nm_device_get_platform(device), ifindex));
- if (!nm_wifi_ap_get_max_bitrate(priv->current_ap))
- ap_changed |= nm_wifi_ap_set_max_bitrate(
- priv->current_ap,
- nm_platform_wifi_get_rate(nm_device_get_platform(device), ifindex));
+
+ if ((update_bssid || update_rate)
+ && nm_platform_wifi_get_station(nm_device_get_platform(device),
+ ifindex,
+ update_bssid ? &bssid : NULL,
+ NULL,
+ update_rate ? &rate : NULL)) {
+ if (update_bssid && nm_ether_addr_is_valid(&bssid))
+ ap_changed |= nm_wifi_ap_set_address_bin(priv->current_ap, &bssid);
+ if (update_rate)
+ ap_changed |= nm_wifi_ap_set_max_bitrate(priv->current_ap, rate);
+ }
if (ap_changed)
_ap_dump(self, LOGL_DEBUG, priv->current_ap, "updated", 0);
diff --git a/src/devices/wifi/nm-iwd-manager.c b/src/devices/wifi/nm-iwd-manager.c
index c7e99e0bf4..2be208c774 100644
--- a/src/devices/wifi/nm-iwd-manager.c
+++ b/src/devices/wifi/nm-iwd-manager.c
@@ -16,6 +16,7 @@
#include "nm-wifi-utils.h"
#include "nm-glib-aux/nm-random-utils.h"
#include "settings/nm-settings.h"
+#include "nm-std-aux/nm-dbus-compat.h"
/*****************************************************************************/
@@ -39,6 +40,7 @@ typedef struct {
guint agent_id;
char * agent_path;
GHashTable * known_networks;
+ NMDeviceIwd * last_agent_call_device;
} NMIwdManagerPrivate;
struct _NMIwdManager {
@@ -87,7 +89,8 @@ G_DEFINE_TYPE(NMIwdManager, nm_iwd_manager, G_TYPE_OBJECT)
/*****************************************************************************/
-static void mirror_8021x_connection_take_and_delete(NMSettingsConnection *sett_conn);
+static void mirror_connection_take_and_delete(NMSettingsConnection *sett_conn,
+ KnownNetworkData * data);
/*****************************************************************************/
@@ -117,6 +120,59 @@ get_property_string_or_null(GDBusProxy *proxy, const char *property)
return get_variant_string_or_null(value);
}
+static gboolean
+get_property_bool(GDBusProxy *proxy, const char *property, gboolean default_val)
+{
+ gs_unref_variant GVariant *value = NULL;
+
+ if (!proxy || !property)
+ return default_val;
+
+ value = g_dbus_proxy_get_cached_property(proxy, property);
+ if (!value || !g_variant_is_of_type(value, G_VARIANT_TYPE_BOOLEAN))
+ return default_val;
+
+ return g_variant_get_boolean(value);
+}
+
+static NMDeviceIwd *
+get_device_from_network(NMIwdManager *self, GDBusProxy *network)
+{
+ NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self);
+ const char * ifname;
+ const char * device_path;
+ NMDevice * device;
+ gs_unref_object GDBusInterface *device_obj = NULL;
+
+ /* Try not to rely on the path of the Device being a prefix of the
+ * Network's object path.
+ */
+
+ device_path = get_property_string_or_null(network, "Device");
+ if (!device_path) {
+ _LOGD("Device not cached for network at %s", g_dbus_proxy_get_object_path(network));
+ return NULL;
+ }
+
+ device_obj = g_dbus_object_manager_get_interface(priv->object_manager,
+ device_path,
+ NM_IWD_DEVICE_INTERFACE);
+
+ ifname = get_property_string_or_null(G_DBUS_PROXY(device_obj), "Name");
+ if (!ifname) {
+ _LOGD("Name not cached for device at %s", device_path);
+ return NULL;
+ }
+
+ device = nm_manager_get_device(priv->manager, ifname, NM_DEVICE_TYPE_WIFI);
+ if (!device || !NM_IS_DEVICE_IWD(device)) {
+ _LOGD("NM device %s is not an IWD-managed device", ifname);
+ return NULL;
+ }
+
+ return NM_DEVICE_IWD(device);
+}
+
static void
agent_dbus_method_cb(GDBusConnection * connection,
const char * sender,
@@ -129,12 +185,10 @@ agent_dbus_method_cb(GDBusConnection * connection,
{
NMIwdManager * self = user_data;
NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self);
- const char * network_path, *device_path, *ifname;
- gs_unref_object GDBusInterface *network = NULL, *device_obj = NULL;
- int ifindex;
- NMDevice * device;
- gs_free char * name_owner = NULL;
- int errsv;
+ const char * network_path;
+ NMDeviceIwd * device;
+ gs_free char * name_owner = NULL;
+ gs_unref_object GDBusInterface *network = NULL;
/* Be paranoid and check the sender address */
name_owner = g_dbus_object_manager_client_get_name_owner(
@@ -142,6 +196,25 @@ agent_dbus_method_cb(GDBusConnection * connection,
if (!nm_streq0(name_owner, sender))
goto return_error;
+ if (!strcmp(method_name, "Cancel")) {
+ const char *reason = NULL;
+
+ g_variant_get(parameters, "(&s)", &reason);
+ _LOGD("agent-request: Cancel reason: %s", reason);
+
+ if (!priv->last_agent_call_device)
+ goto return_error;
+
+ if (nm_device_iwd_agent_query(priv->last_agent_call_device, NULL)) {
+ priv->last_agent_call_device = NULL;
+ g_dbus_method_invocation_return_value(invocation, NULL);
+ return;
+ }
+
+ priv->last_agent_call_device = NULL;
+ goto return_error;
+ }
+
if (!strcmp(method_name, "RequestUserPassword"))
g_variant_get(parameters, "(&os)", &network_path, NULL);
else
@@ -151,47 +224,23 @@ agent_dbus_method_cb(GDBusConnection * connection,
network_path,
NM_IWD_NETWORK_INTERFACE);
if (!network) {
- _LOGE("unable to find the network object");
- return;
- }
-
- device_path = get_property_string_or_null(G_DBUS_PROXY(network), "Device");
- if (!device_path) {
- _LOGD("agent-request: device not cached for network %s in IWD Agent request", network_path);
+ _LOGE("agent-request: unable to find the network object");
goto return_error;
}
- device_obj = g_dbus_object_manager_get_interface(priv->object_manager,
- device_path,
- NM_IWD_DEVICE_INTERFACE);
-
- ifname = get_property_string_or_null(G_DBUS_PROXY(device_obj), "Name");
- if (!ifname) {
- _LOGD("agent-request: name not cached for device %s in IWD Agent request", device_path);
- goto return_error;
- }
-
- ifindex = if_nametoindex(ifname);
- if (!ifindex) {
- errsv = errno;
- _LOGD("agent-request: if_nametoindex failed for Name %s for Device at %s: %i",
- ifname,
- device_path,
- errsv);
- goto return_error;
- }
-
- device = nm_manager_get_device_by_ifindex(priv->manager, ifindex);
- if (!NM_IS_DEVICE_IWD(device)) {
- _LOGD("agent-request: IWD device named %s is not a Wifi device in IWD Agent request",
- ifname);
+ device = get_device_from_network(self, G_DBUS_PROXY(network));
+ if (!device) {
+ _LOGD("agent-request: device not found in IWD Agent request");
goto return_error;
}
- if (nm_device_iwd_agent_query(NM_DEVICE_IWD(device), invocation))
+ if (nm_device_iwd_agent_query(device, invocation)) {
+ priv->last_agent_call_device = device;
return;
+ }
- _LOGD("agent-request: device %s did not handle the IWD Agent request", ifname);
+ _LOGD("agent-request: device %s did not handle the IWD Agent request",
+ nm_device_get_iface(NM_DEVICE(device)));
return_error:
/* IWD doesn't look at the specific error */
@@ -219,10 +268,12 @@ static const GDBusInterfaceInfo iwd_agent_iface_info = NM_DEFINE_GDBUS_INTERFACE
NM_DEFINE_GDBUS_ARG_INFO("password", "s"), ), ),
NM_DEFINE_GDBUS_METHOD_INFO(
"RequestUserPassword",
- .in_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("network", "o"),
+ .in_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("network", "o"),
NM_DEFINE_GDBUS_ARG_INFO("user", "s"), ),
- .out_args =
- NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("password", "s"), ), ), ), );
+ .out_args = NM_DEFINE_GDBUS_ARG_INFOS(NM_DEFINE_GDBUS_ARG_INFO("password", "s"), ), ),
+ NM_DEFINE_GDBUS_METHOD_INFO("Cancel",
+ .in_args = NM_DEFINE_GDBUS_ARG_INFOS(
+ NM_DEFINE_GDBUS_ARG_INFO("reason", "s"), ), ), ), );
static guint
iwd_agent_export(GDBusConnection *connection, gpointer user_data, char **agent_path, GError **error)
@@ -259,17 +310,8 @@ register_agent(NMIwdManager *self)
GDBusInterface * agent_manager;
agent_manager = g_dbus_object_manager_get_interface(priv->object_manager,
- "/net/connman/iwd",
+ "/net/connman/iwd", /* IWD 1.0+ */
NM_IWD_AGENT_MANAGER_INTERFACE);
-
- if (!agent_manager) {
- /* IWD prior to 1.0 dated 30 October, 2019 has the agent manager on a
- * different path. */
- agent_manager = g_dbus_object_manager_get_interface(priv->object_manager,
- "/",
- NM_IWD_AGENT_MANAGER_INTERFACE);
- }
-
if (!agent_manager) {
_LOGE("unable to register the IWD Agent: PSK/8021x Wi-Fi networks may not work");
return;
@@ -328,7 +370,7 @@ known_network_data_free(KnownNetworkData *network)
return;
g_object_unref(network->known_network);
- mirror_8021x_connection_take_and_delete(network->mirror_connection);
+ mirror_connection_take_and_delete(network->mirror_connection, network);
g_slice_free(KnownNetworkData, network);
}
@@ -369,14 +411,72 @@ set_device_dbus_object(NMIwdManager *self, GDBusProxy *proxy, GDBusObject *objec
nm_device_iwd_set_dbus_object(NM_DEVICE_IWD(device), object);
}
-/* Look up an existing NMSettingsConnection for a WPA2-Enterprise network
- * that has been preprovisioned with an IWD config file, or create a new
- * in-memory connection object so that NM autoconnect mechanism and the
- * clients know this networks needs no additional EAP configuration from
- * the user.
+static void
+known_network_update_cb(GObject *source, GAsyncResult *res, gpointer user_data)
+{
+ gs_unref_variant GVariant *variant = NULL;
+ gs_free_error GError *error = NULL;
+
+ variant = g_dbus_proxy_call_finish(G_DBUS_PROXY(source), res, &error);
+ if (!variant) {
+ nm_log_warn(LOGD_WIFI,
+ "Updating %s on IWD known network %s failed: %s",
+ (const char *) user_data,
+ g_dbus_proxy_get_object_path(G_DBUS_PROXY(source)),
+ error->message);
+ }
+}
+
+static void
+sett_conn_changed(NMSettingsConnection *sett_conn, guint update_reason, KnownNetworkData *data)
+{
+ NMSettingsConnectionIntFlags flags;
+ NMConnection * conn = nm_settings_connection_get_connection(sett_conn);
+ NMSettingConnection * s_conn = nm_connection_get_setting_connection(conn);
+ gboolean nm_autoconnectable = nm_setting_connection_get_autoconnect(s_conn);
+ gboolean iwd_autoconnectable = get_property_bool(data->known_network, "AutoConnect", TRUE);
+
+ nm_assert(sett_conn == data->mirror_connection);
+
+ if (iwd_autoconnectable == nm_autoconnectable)
+ return;
+
+ /* If this is a generated connection it may be ourselves updating it */
+ flags = nm_settings_connection_get_flags(data->mirror_connection);
+ if (NM_FLAGS_HAS(flags, NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED))
+ return;
+
+ nm_log_dbg(LOGD_WIFI,
+ "Updating AutoConnect on known network at %s based on connection %s",
+ g_dbus_proxy_get_object_path(data->known_network),
+ nm_settings_connection_get_id(data->mirror_connection));
+ g_dbus_proxy_call(data->known_network,
+ DBUS_INTERFACE_PROPERTIES ".Set",
+ g_variant_new("(ssv)",
+ NM_IWD_KNOWN_NETWORK_INTERFACE,
+ "AutoConnect",
+ g_variant_new_boolean(nm_autoconnectable)),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ known_network_update_cb,
+ "AutoConnect");
+}
+
+/* Look up an existing NMSettingsConnection for a network that has been
+ * preprovisioned with an IWD config file or has been connected to before,
+ * or create a new in-memory NMSettingsConnection object. This will let
+ * users control the few supported properties (mainly make it
+ * IWD-autoconnectable or not), remove/forget the network, or, for a
+ * WPA2-Enterprise type network it will inform the NM autoconnect mechanism
+ * and the clients that this networks needs no additional EAP configuration
+ * from the user.
*/
static NMSettingsConnection *
-mirror_8021x_connection(NMIwdManager *self, const char *name, gboolean create_new)
+mirror_connection(NMIwdManager * self,
+ const KnownNetworkId *id,
+ gboolean create_new,
+ GDBusProxy * known_network)
{
NMIwdManagerPrivate * priv = NM_IWD_MANAGER_GET_PRIVATE(self);
NMSettingsConnection *const *iter;
@@ -384,43 +484,126 @@ mirror_8021x_connection(NMIwdManager *self, const char *name, gboolean create_ne
NMSettingsConnection * settings_connection = NULL;
char uuid[37];
NMSetting * setting;
- GError * error = NULL;
- gs_unref_bytes GBytes *new_ssid = NULL;
+ gs_free_error GError *error = NULL;
+ gs_unref_bytes GBytes *new_ssid = NULL;
+ gsize ssid_len = strlen(id->name);
+ gboolean autoconnectable = TRUE;
+ gboolean hidden = FALSE;
+ gboolean exact_match = TRUE;
+ const char * key_mgmt = NULL;
+
+ if (known_network) {
+ autoconnectable = get_property_bool(known_network, "AutoConnect", TRUE);
+ hidden = get_property_bool(known_network, "Hidden", FALSE);
+ }
for (iter = nm_settings_get_connections(priv->settings, NULL); *iter; iter++) {
NMSettingsConnection *sett_conn = *iter;
NMConnection * conn = nm_settings_connection_get_connection(sett_conn);
NMIwdNetworkSecurity security;
- gs_free char * ssid_name = NULL;
NMSettingWireless * s_wifi;
- NMSetting8021x * s_8021x;
- gboolean external = FALSE;
- guint i;
+ const guint8 * ssid_bytes;
+ gsize ssid_len2;
+
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(conn, NULL, &security))
+ continue;
- security = nm_wifi_connection_get_iwd_security(conn, NULL);
- if (security != NM_IWD_NETWORK_SECURITY_8021X)
+ if (security != id->security)
continue;
s_wifi = nm_connection_get_setting_wireless(conn);
if (!s_wifi)
continue;
- ssid_name = _nm_utils_ssid_to_utf8(nm_setting_wireless_get_ssid(s_wifi));
-
- if (!nm_streq(ssid_name, name))
+ /* The SSID must be UTF-8 if it matches since id->name is known to be
+ * valid UTF-8, so just memcmp them.
+ */
+ ssid_bytes = g_bytes_get_data(nm_setting_wireless_get_ssid(s_wifi), &ssid_len2);
+ if (!ssid_bytes || ssid_len2 != ssid_len || memcmp(ssid_bytes, id->name, ssid_len))
continue;
- s_8021x = nm_connection_get_setting_802_1x(conn);
- for (i = 0; i < nm_setting_802_1x_get_num_eap_methods(s_8021x); i++) {
- if (nm_streq(nm_setting_802_1x_get_eap_method(s_8021x, i), "external")) {
- external = TRUE;
- break;
+ exact_match = TRUE;
+
+ if (known_network) {
+ NMSettingConnection *s_conn = nm_connection_get_setting_connection(conn);
+
+ if (nm_setting_connection_get_autoconnect(s_conn) != autoconnectable
+ || nm_setting_wireless_get_hidden(s_wifi) != hidden)
+ exact_match = FALSE;
+ }
+
+ switch (id->security) {
+ case NM_IWD_NETWORK_SECURITY_WEP:
+ case NM_IWD_NETWORK_SECURITY_NONE:
+ case NM_IWD_NETWORK_SECURITY_PSK:
+ break;
+ case NM_IWD_NETWORK_SECURITY_8021X:
+ {
+ NMSetting8021x *s_8021x = nm_connection_get_setting_802_1x(conn);
+ gboolean external = FALSE;
+ guint i;
+
+ for (i = 0; i < nm_setting_802_1x_get_num_eap_methods(s_8021x); i++) {
+ if (nm_streq(nm_setting_802_1x_get_eap_method(s_8021x, i), "external")) {
+ external = TRUE;
+ break;
+ }
}
+
+ /* Prefer returning connections with EAP method "external" */
+ if (!external)
+ exact_match = FALSE;
+ }
}
- /* Prefer returning connections for EAP method "external" */
- if (!settings_connection || external)
+ if (!settings_connection || exact_match)
settings_connection = sett_conn;
+
+ if (exact_match)
+ break;
+ }
+
+ if (settings_connection && known_network && !exact_match) {
+ NMSettingsConnectionIntFlags flags = nm_settings_connection_get_flags(settings_connection);
+
+ /* If we found a connection and it's generated (likely by ourselves)
+ * it may have been created on a request by
+ * nm_iwd_manager_get_ap_mirror_connection() when no Known Network
+ * was available so we didn't have access to its properties other
+ * than Name and Security. Copy their values to the generated
+ * NMConnection.
+ * TODO: avoid notify signals triggering our own watch.
+ *
+ * If on the other hand this is a user-created NMConnection we
+ * should try to copy the properties from it to IWD's Known Network
+ * using the Properties DBus interface in case the user created an
+ * NM connection before IWD appeared on the bus, or before IWD
+ * created its Known Network object.
+ */
+ if (NM_FLAGS_HAS(flags, NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED)) {
+ NMConnection *tmp_conn = nm_settings_connection_get_connection(settings_connection);
+ NMSettingConnection *s_conn = nm_connection_get_setting_connection(tmp_conn);
+ NMSettingWireless * s_wifi = nm_connection_get_setting_wireless(tmp_conn);
+
+ g_object_set(G_OBJECT(s_conn),
+ NM_SETTING_CONNECTION_AUTOCONNECT,
+ autoconnectable,
+ NULL);
+ g_object_set(G_OBJECT(s_wifi), NM_SETTING_WIRELESS_HIDDEN, hidden, NULL);
+ } else {
+ KnownNetworkData data = {known_network, settings_connection};
+ sett_conn_changed(settings_connection, 0, &data);
+ }
+ }
+
+ if (settings_connection && known_network) {
+ /* Reset NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL now that the
+ * connection is going to be referenced by a known network, we don't
+ * want it to be deleted when activation fails anymore.
+ */
+ nm_settings_connection_set_flags_full(settings_connection,
+ NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL,
+ 0);
}
/* If we already have an NMSettingsConnection matching this
@@ -437,58 +620,82 @@ mirror_8021x_connection(NMIwdManager *self, const char *name, gboolean create_ne
NM_SETTING_CONNECTION_TYPE,
NM_SETTING_WIRELESS_SETTING_NAME,
NM_SETTING_CONNECTION_ID,
- name,
+ id->name,
NM_SETTING_CONNECTION_UUID,
nm_utils_uuid_generate_buf(uuid),
+ NM_SETTING_CONNECTION_AUTOCONNECT,
+ autoconnectable,
NULL));
nm_connection_add_setting(connection, setting);
- new_ssid = g_bytes_new(name, strlen(name));
+ new_ssid = g_bytes_new(id->name, ssid_len);
setting = NM_SETTING(g_object_new(NM_TYPE_SETTING_WIRELESS,
NM_SETTING_WIRELESS_SSID,
new_ssid,
NM_SETTING_WIRELESS_MODE,
NM_SETTING_WIRELESS_MODE_INFRA,
+ NM_SETTING_WIRELESS_HIDDEN,
+ hidden,
NULL));
nm_connection_add_setting(connection, setting);
- setting = NM_SETTING(g_object_new(NM_TYPE_SETTING_WIRELESS_SECURITY,
- NM_SETTING_WIRELESS_SECURITY_AUTH_ALG,
- "open",
- NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
- "wpa-eap",
- NULL));
- nm_connection_add_setting(connection, setting);
+ switch (id->security) {
+ case NM_IWD_NETWORK_SECURITY_WEP:
+ key_mgmt = "none";
+ break;
+ case NM_IWD_NETWORK_SECURITY_NONE:
+ key_mgmt = NULL;
+ break;
+ case NM_IWD_NETWORK_SECURITY_PSK:
+ key_mgmt = "wpa-psk";
+ break;
+ case NM_IWD_NETWORK_SECURITY_8021X:
+ key_mgmt = "wpa-eap";
+ break;
+ }
- /* "password" and "private-key-password" may be requested by the IWD agent
- * from NM and IWD will implement a specific secret cache policy so by
- * default respect that policy and don't save copies of those secrets in
- * NM settings. The saved values can not be used anyway because of our
- * use of NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW.
- */
- setting = NM_SETTING(g_object_new(NM_TYPE_SETTING_802_1X,
- NM_SETTING_802_1X_PASSWORD_FLAGS,
- NM_SETTING_SECRET_FLAG_NOT_SAVED,
- NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
- NM_SETTING_SECRET_FLAG_NOT_SAVED,
- NULL));
- nm_setting_802_1x_add_eap_method(NM_SETTING_802_1X(setting), "external");
- nm_connection_add_setting(connection, setting);
+ if (key_mgmt) {
+ setting = NM_SETTING(g_object_new(NM_TYPE_SETTING_WIRELESS_SECURITY,
+ NM_SETTING_WIRELESS_SECURITY_AUTH_ALG,
+ "open",
+ NM_SETTING_WIRELESS_SECURITY_KEY_MGMT,
+ key_mgmt,
+ NULL));
+ nm_connection_add_setting(connection, setting);
+ }
+
+ if (id->security == NM_IWD_NETWORK_SECURITY_8021X) {
+ /* "password" and "private-key-password" may be requested by the IWD agent
+ * from NM and IWD will implement a specific secret cache policy so by
+ * default respect that policy and don't save copies of those secrets in
+ * NM settings. The saved values can not be used anyway because of our
+ * use of NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW.
+ */
+ setting = NM_SETTING(g_object_new(NM_TYPE_SETTING_802_1X,
+ NM_SETTING_802_1X_PASSWORD_FLAGS,
+ NM_SETTING_SECRET_FLAG_NOT_SAVED,
+ NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
+ NM_SETTING_SECRET_FLAG_NOT_SAVED,
+ NULL));
+ nm_setting_802_1x_add_eap_method(NM_SETTING_802_1X(setting), "external");
+ nm_connection_add_setting(connection, setting);
+ }
if (!nm_connection_normalize(connection, NULL, NULL, NULL))
return NULL;
- if (!nm_settings_add_connection(priv->settings,
- connection,
- NM_SETTINGS_CONNECTION_PERSIST_MODE_IN_MEMORY_ONLY,
- NM_SETTINGS_CONNECTION_ADD_REASON_NONE,
- NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED,
- &settings_connection,
- &error)) {
+ if (!nm_settings_add_connection(
+ priv->settings,
+ connection,
+ NM_SETTINGS_CONNECTION_PERSIST_MODE_IN_MEMORY_ONLY,
+ NM_SETTINGS_CONNECTION_ADD_REASON_NONE,
+ NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED
+ | (known_network ? 0 : NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL),
+ &settings_connection,
+ &error)) {
_LOGW("failed to add a mirror NMConnection for IWD's Known Network '%s': %s",
- name,
+ id->name,
error->message);
- g_error_free(error);
return NULL;
}
@@ -496,7 +703,7 @@ mirror_8021x_connection(NMIwdManager *self, const char *name, gboolean create_ne
}
static void
-mirror_8021x_connection_take_and_delete(NMSettingsConnection *sett_conn)
+mirror_connection_take_and_delete(NMSettingsConnection *sett_conn, KnownNetworkData *data)
{
NMSettingsConnectionIntFlags flags;
@@ -510,6 +717,7 @@ mirror_8021x_connection_take_and_delete(NMSettingsConnection *sett_conn)
if (NM_FLAGS_HAS(flags, NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED))
nm_settings_connection_delete(sett_conn, FALSE);
+ g_signal_handlers_disconnect_by_data(sett_conn, data);
g_object_unref(sett_conn);
}
@@ -539,6 +747,7 @@ interface_added(GDBusObjectManager *object_manager,
if (nm_streq(iface_name, NM_IWD_KNOWN_NETWORK_INTERFACE)) {
KnownNetworkId * id;
+ KnownNetworkId * orig_id;
KnownNetworkData * data;
NMIwdNetworkSecurity security;
const char * type_str, *name;
@@ -560,28 +769,42 @@ interface_added(GDBusObjectManager *object_manager,
id = known_network_id_new(name, security);
- data = g_hash_table_lookup(priv->known_networks, id);
- if (data) {
+ if (g_hash_table_lookup_extended(priv->known_networks,
+ id,
+ (void **) &orig_id,
+ (void **) &data)) {
_LOGW("DBus error: KnownNetwork already exists ('%s', %s)", name, type_str);
- g_free(id);
nm_g_object_ref_set(&data->known_network, proxy);
+ g_free(id);
+ id = orig_id;
} else {
data = g_slice_new0(KnownNetworkData);
data->known_network = g_object_ref(proxy);
g_hash_table_insert(priv->known_networks, id, data);
}
- if (security == NM_IWD_NETWORK_SECURITY_8021X) {
- sett_conn = mirror_8021x_connection(self, name, TRUE);
+ sett_conn = mirror_connection(self, id, TRUE, proxy);
- if (sett_conn && sett_conn != data->mirror_connection) {
- NMSettingsConnection *sett_conn_old = data->mirror_connection;
+ if (sett_conn && sett_conn != data->mirror_connection) {
+ NMSettingsConnection *sett_conn_old = data->mirror_connection;
- data->mirror_connection = nm_g_object_ref(sett_conn);
- mirror_8021x_connection_take_and_delete(sett_conn_old);
- }
- } else
- mirror_8021x_connection_take_and_delete(g_steal_pointer(&data->mirror_connection));
+ data->mirror_connection = nm_g_object_ref(sett_conn);
+ mirror_connection_take_and_delete(sett_conn_old, data);
+
+ g_signal_connect(sett_conn,
+ NM_SETTINGS_CONNECTION_UPDATED_INTERNAL,
+ G_CALLBACK(sett_conn_changed),
+ data);
+ }
+
+ return;
+ }
+
+ if (nm_streq(iface_name, NM_IWD_NETWORK_INTERFACE)) {
+ NMDeviceIwd *device = get_device_from_network(self, proxy);
+
+ if (device)
+ nm_device_iwd_network_add_remove(device, proxy, TRUE);
return;
}
@@ -629,6 +852,15 @@ interface_removed(GDBusObjectManager *object_manager,
g_hash_table_remove(priv->known_networks, &id);
return;
}
+
+ if (nm_streq(iface_name, NM_IWD_NETWORK_INTERFACE)) {
+ NMDeviceIwd *device = get_device_from_network(self, proxy);
+
+ if (device)
+ nm_device_iwd_network_add_remove(device, proxy, FALSE);
+
+ return;
+ }
}
static void
@@ -666,42 +898,47 @@ object_removed(GDBusObjectManager *object_manager, GDBusObject *object, gpointer
static void
connection_removed(NMSettings *settings, NMSettingsConnection *sett_conn, gpointer user_data)
{
- NMIwdManager * self = user_data;
- NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self);
- NMConnection * conn = nm_settings_connection_get_connection(sett_conn);
- NMSettingWireless * s_wireless;
- gboolean mapped;
- KnownNetworkData * data;
- KnownNetworkId id;
- gs_free char * ssid_str = NULL;
-
- id.security = nm_wifi_connection_get_iwd_security(conn, &mapped);
- if (!mapped)
+ NMIwdManager * self = user_data;
+ NMIwdManagerPrivate * priv = NM_IWD_MANAGER_GET_PRIVATE(self);
+ NMConnection * conn = nm_settings_connection_get_connection(sett_conn);
+ NMSettingWireless * s_wireless;
+ KnownNetworkData * data;
+ KnownNetworkId id;
+ char ssid_buf[33];
+ const guint8 * ssid_bytes;
+ gsize ssid_len;
+ NMSettingsConnection *new_mirror_conn;
+
+ if (!nm_wifi_connection_get_iwd_ssid_and_security(conn, NULL, &id.security))
return;
s_wireless = nm_connection_get_setting_wireless(conn);
- ssid_str = _nm_utils_ssid_to_utf8(nm_setting_wireless_get_ssid(s_wireless));
- id.name = ssid_str;
- data = g_hash_table_lookup(priv->known_networks, &id);
- if (!data)
+ if (!s_wireless)
return;
- if (id.security == NM_IWD_NETWORK_SECURITY_8021X) {
- NMSettingsConnection *new_mirror_conn;
+ ssid_bytes = g_bytes_get_data(nm_setting_wireless_get_ssid(s_wireless), &ssid_len);
+ if (!ssid_bytes || ssid_len > 32 || memchr(ssid_bytes, 0, ssid_len))
+ return;
- if (data->mirror_connection != sett_conn)
- return;
+ memcpy(ssid_buf, ssid_bytes, ssid_len);
+ ssid_buf[ssid_len] = '\0';
+ id.name = ssid_buf;
+ data = g_hash_table_lookup(priv->known_networks, &id);
+ if (!data)
+ return;
+
+ if (data->mirror_connection != sett_conn)
+ return;
- g_clear_object(&data->mirror_connection);
+ g_clear_object(&data->mirror_connection);
- /* Don't call Forget for an 8021x network until there's no
- * longer *any* matching NMSettingsConnection (debatable)
- */
- new_mirror_conn = mirror_8021x_connection(self, id.name, FALSE);
- if (new_mirror_conn) {
- data->mirror_connection = g_object_ref(new_mirror_conn);
- return;
- }
+ /* Don't call Forget on the Known Network until there's no longer *any*
+ * matching NMSettingsConnection (debatable)
+ */
+ new_mirror_conn = mirror_connection(self, &id, FALSE, NULL);
+ if (new_mirror_conn) {
+ data->mirror_connection = g_object_ref(new_mirror_conn);
+ return;
}
if (!priv->running)
@@ -801,7 +1038,28 @@ device_added(NMManager *manager, NMDevice *device, gpointer user_data)
if (!priv->running)
return;
+ /* Here we handle a potential scenario where IWD's DBus objects for the
+ * new device popped up before the NMDevice. The
+ * interface_added/object_added signals have been received already and
+ * the handlers couldn't do much because the NMDevice wasn't there yet
+ * so now we go over the Network and Device interfaces again. In this
+ * exact order for "object path" property consistency -- see reasoning
+ * in object_compare_interfaces.
+ */
objects = g_dbus_object_manager_get_objects(priv->object_manager);
+
+ for (iter = objects; iter; iter = iter->next) {
+ GDBusObject * object = G_DBUS_OBJECT(iter->data);
+ gs_unref_object GDBusInterface *interface = NULL;
+
+ interface = g_dbus_object_get_interface(object, NM_IWD_NETWORK_INTERFACE);
+ if (!interface)
+ continue;
+
+ if (NM_DEVICE_IWD(device) == get_device_from_network(self, (GDBusProxy *) interface))
+ nm_device_iwd_network_add_remove(NM_DEVICE_IWD(device), (GDBusProxy *) interface, TRUE);
+ }
+
for (iter = objects; iter; iter = iter->next) {
GDBusObject * object = G_DBUS_OBJECT(iter->data);
gs_unref_object GDBusInterface *interface = NULL;
@@ -821,6 +1079,73 @@ device_added(NMManager *manager, NMDevice *device, gpointer user_data)
}
static void
+device_removed(NMManager *manager, NMDevice *device, gpointer user_data)
+{
+ NMIwdManager * self = user_data;
+ NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self);
+
+ if (!NM_IS_DEVICE_IWD(device))
+ return;
+
+ if (priv->last_agent_call_device == NM_DEVICE_IWD(device))
+ priv->last_agent_call_device = NULL;
+}
+
+/* This is used to sort the list of objects returned by GetManagedObjects()
+ * based on the DBus interfaces available on these objects in such a way that
+ * the interface_added calls happen in the right order. The order is defined
+ * by how some DBus interfaces point to interfaces on other objects using
+ * DBus properties of the type "object path" ("o" signature). This creates
+ * "dependencies" between objects.
+ *
+ * When NM and IWD are running, the InterfacesAdded signals should come in
+ * an order that ensures consistency of those object paths. For example
+ * when a Network interface is added with a KnownNetwork property, or that
+ * property is assigned a new value, the KnownNetwork object pointed to by
+ * it will have been added in an earlier InterfacesAdded signal. Similarly
+ * Station.ConnectedNetwork and Station.GetOrdereNetworks() only point to
+ * existing Network objects. (There may be circular dependencies but during
+ * initialization we only need a subset of those properties that doesn't
+ * have this problem.)
+ *
+ * But GetManagedObjects doesn't guarantee this kind of consistency so we
+ * order the returned object list ourselves to simplify the job of
+ * interface_added(). Objects that don't have any interfaces listed in
+ * interface_order are moved to the end of the list.
+ */
+static int
+object_compare_interfaces(gconstpointer a, gconstpointer b)
+{
+ static const char *interface_order[] = {
+ NM_IWD_KNOWN_NETWORK_INTERFACE,
+ NM_IWD_NETWORK_INTERFACE,
+ NM_IWD_DEVICE_INTERFACE,
+ };
+ int rank_a = G_N_ELEMENTS(interface_order);
+ int rank_b = G_N_ELEMENTS(interface_order);
+ guint pos;
+
+ for (pos = 0; interface_order[pos]; pos++) {
+ GDBusInterface *iface_a;
+ GDBusInterface *iface_b;
+
+ if (rank_a == G_N_ELEMENTS(interface_order)
+ && (iface_a = g_dbus_object_get_interface(G_DBUS_OBJECT(a), interface_order[pos]))) {
+ rank_a = pos;
+ g_object_unref(iface_a);
+ }
+
+ if (rank_b == G_N_ELEMENTS(interface_order)
+ && (iface_b = g_dbus_object_get_interface(G_DBUS_OBJECT(b), interface_order[pos]))) {
+ rank_b = pos;
+ g_object_unref(iface_b);
+ }
+ }
+
+ return rank_a - rank_b;
+}
+
+static void
got_object_manager(GObject *object, GAsyncResult *result, gpointer user_data)
{
NMIwdManager * self = user_data;
@@ -875,6 +1200,7 @@ got_object_manager(GObject *object, GAsyncResult *result, gpointer user_data)
g_hash_table_remove_all(priv->known_networks);
objects = g_dbus_object_manager_get_objects(object_manager);
+ objects = g_list_sort(objects, object_compare_interfaces);
for (iter = objects; iter; iter = iter->next)
object_added(NULL, G_DBUS_OBJECT(iter->data), self);
@@ -911,6 +1237,47 @@ nm_iwd_manager_is_known_network(NMIwdManager *self, const char *name, NMIwdNetwo
return g_hash_table_contains(priv->known_networks, &kn_id);
}
+NMSettingsConnection *
+nm_iwd_manager_get_ap_mirror_connection(NMIwdManager *self, NMWifiAP *ap)
+{
+ NMIwdManagerPrivate * priv = NM_IWD_MANAGER_GET_PRIVATE(self);
+ KnownNetworkData * data;
+ char name_buf[33];
+ KnownNetworkId kn_id = {name_buf, NM_IWD_NETWORK_SECURITY_NONE};
+ const guint8 * ssid_bytes;
+ gsize ssid_len;
+ NM80211ApFlags flags = nm_wifi_ap_get_flags(ap);
+ NM80211ApSecurityFlags sec_flags = nm_wifi_ap_get_wpa_flags(ap) | nm_wifi_ap_get_rsn_flags(ap);
+
+ ssid_bytes = g_bytes_get_data(nm_wifi_ap_get_ssid(ap), &ssid_len);
+ ssid_len = MIN(ssid_len, 32);
+ memcpy(name_buf, ssid_bytes, ssid_len);
+ name_buf[ssid_len] = '\0';
+
+ if (flags & NM_802_11_AP_FLAGS_PRIVACY)
+ kn_id.security = NM_IWD_NETWORK_SECURITY_WEP;
+
+ if (sec_flags & NM_802_11_AP_SEC_KEY_MGMT_PSK)
+ kn_id.security = NM_IWD_NETWORK_SECURITY_PSK;
+ else if (sec_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
+ kn_id.security = NM_IWD_NETWORK_SECURITY_8021X;
+
+ /* Right now it's easier for us to do a name+security lookup than to use
+ * the Network.KnownNetwork property to look up by path.
+ */
+ data = g_hash_table_lookup(priv->known_networks, &kn_id);
+ if (data)
+ return data->mirror_connection;
+
+ /* We have no KnownNetwork for this AP, we're probably connecting to it for
+ * the first time. This is not a usual/supported scenario so we don't need
+ * to bother too much about creating a great mirror connection, we don't
+ * even have any more information than the Name & Type properties on the
+ * Network interface. This *should* never happen for an 8021x type network.
+ */
+ return mirror_connection(self, &kn_id, TRUE, NULL);
+}
+
GDBusProxy *
nm_iwd_manager_get_dbus_interface(NMIwdManager *self, const char *path, const char *name)
{
@@ -936,6 +1303,7 @@ nm_iwd_manager_init(NMIwdManager *self)
priv->manager = g_object_ref(NM_MANAGER_GET);
g_signal_connect(priv->manager, NM_MANAGER_DEVICE_ADDED, G_CALLBACK(device_added), self);
+ g_signal_connect(priv->manager, NM_MANAGER_DEVICE_REMOVED, G_CALLBACK(device_removed), self);
priv->settings = g_object_ref(NM_SETTINGS_GET);
g_signal_connect(priv->settings,
@@ -978,6 +1346,8 @@ dispose(GObject *object)
g_clear_object(&priv->manager);
}
+ priv->last_agent_call_device = NULL;
+
G_OBJECT_CLASS(nm_iwd_manager_parent_class)->dispose(object);
}
diff --git a/src/devices/wifi/nm-iwd-manager.h b/src/devices/wifi/nm-iwd-manager.h
index 00f0c30411..5a0f66680c 100644
--- a/src/devices/wifi/nm-iwd-manager.h
+++ b/src/devices/wifi/nm-iwd-manager.h
@@ -8,6 +8,7 @@
#include "devices/nm-device.h"
#include "nm-wifi-utils.h"
+#include "nm-wifi-ap.h"
#define NM_IWD_BUS_TYPE G_BUS_TYPE_SYSTEM
#define NM_IWD_SERVICE "net.connman.iwd"
@@ -44,6 +45,8 @@ gboolean nm_iwd_manager_is_known_network(NMIwdManager * self,
const char * name,
NMIwdNetworkSecurity security);
+NMSettingsConnection *nm_iwd_manager_get_ap_mirror_connection(NMIwdManager *self, NMWifiAP *ap);
+
GDBusProxy *
nm_iwd_manager_get_dbus_interface(NMIwdManager *self, const char *path, const char *name);
diff --git a/src/devices/wifi/nm-wifi-ap.c b/src/devices/wifi/nm-wifi-ap.c
index 55438a53e4..4fa44f0126 100644
--- a/src/devices/wifi/nm-wifi-ap.c
+++ b/src/devices/wifi/nm-wifi-ap.c
@@ -83,29 +83,6 @@ nm_wifi_ap_get_ssid(const NMWifiAP *ap)
}
gboolean
-nm_wifi_ap_set_ssid_arr(NMWifiAP *ap, const guint8 *ssid, gsize ssid_len)
-{
- NMWifiAPPrivate *priv;
-
- g_return_val_if_fail(NM_IS_WIFI_AP(ap), FALSE);
-
- if (ssid_len > 32)
- g_return_val_if_reached(FALSE);
-
- priv = NM_WIFI_AP_GET_PRIVATE(ap);
-
- if (nm_utils_gbytes_equal_mem(priv->ssid, ssid, ssid_len))
- return FALSE;
-
- nm_clear_pointer(&priv->ssid, g_bytes_unref);
- if (ssid_len > 0)
- priv->ssid = g_bytes_new(ssid, ssid_len);
-
- _notify(ap, PROP_SSID);
- return TRUE;
-}
-
-gboolean
nm_wifi_ap_set_ssid(NMWifiAP *ap, GBytes *ssid)
{
NMWifiAPPrivate *priv;
@@ -185,11 +162,13 @@ nm_wifi_ap_get_address(const NMWifiAP *ap)
return NM_WIFI_AP_GET_PRIVATE(ap)->address;
}
-static gboolean
-nm_wifi_ap_set_address_bin(NMWifiAP *ap, const guint8 addr[static 6 /* ETH_ALEN */])
+gboolean
+nm_wifi_ap_set_address_bin(NMWifiAP *ap, const NMEtherAddr *addr)
{
NMWifiAPPrivate *priv = NM_WIFI_AP_GET_PRIVATE(ap);
+ nm_assert(addr);
+
if (!priv->address || !nm_utils_hwaddr_matches(addr, ETH_ALEN, priv->address, -1)) {
g_free(priv->address);
priv->address = nm_utils_hwaddr_ntoa(addr, ETH_ALEN);
@@ -202,13 +181,13 @@ nm_wifi_ap_set_address_bin(NMWifiAP *ap, const guint8 addr[static 6 /* ETH_ALEN
gboolean
nm_wifi_ap_set_address(NMWifiAP *ap, const char *addr)
{
- guint8 addr_buf[ETH_ALEN];
+ NMEtherAddr addr_buf;
g_return_val_if_fail(NM_IS_WIFI_AP(ap), FALSE);
- if (!addr || !nm_utils_hwaddr_aton(addr, addr_buf, sizeof(addr_buf)))
+ if (!addr || !nm_utils_hwaddr_aton(addr, &addr_buf, sizeof(addr_buf)))
g_return_val_if_reached(FALSE);
- return nm_wifi_ap_set_address_bin(ap, addr_buf);
+ return nm_wifi_ap_set_address_bin(ap, &addr_buf);
}
NM80211Mode
@@ -365,6 +344,18 @@ nm_wifi_ap_get_metered(const NMWifiAP *self)
return NM_WIFI_AP_GET_PRIVATE(self)->metered;
}
+NM80211ApSecurityFlags
+nm_wifi_ap_get_wpa_flags(const NMWifiAP *self)
+{
+ return NM_WIFI_AP_GET_PRIVATE(self)->wpa_flags;
+}
+
+NM80211ApSecurityFlags
+nm_wifi_ap_get_rsn_flags(const NMWifiAP *self)
+{
+ return NM_WIFI_AP_GET_PRIVATE(self)->rsn_flags;
+}
+
/*****************************************************************************/
gboolean
@@ -395,7 +386,7 @@ nm_wifi_ap_update_from_properties(NMWifiAP *ap, const NMSupplicantBssInfo *bss_i
changed |= nm_wifi_ap_set_ssid(ap, bss_info->ssid);
if (bss_info->bssid_valid)
- changed |= nm_wifi_ap_set_address_bin(ap, bss_info->bssid);
+ changed |= nm_wifi_ap_set_address_bin(ap, &bss_info->bssid);
else {
/* we don't actually clear the value. */
}
@@ -751,7 +742,7 @@ nm_wifi_ap_new_fake_from_connection(NMConnection *connection)
s_wireless = nm_connection_get_setting_wireless(connection);
g_return_val_if_fail(s_wireless != NULL, NULL);
- ap = (NMWifiAP *) g_object_new(NM_TYPE_WIFI_AP, NULL);
+ ap = g_object_new(NM_TYPE_WIFI_AP, NULL);
priv = NM_WIFI_AP_GET_PRIVATE(ap);
priv->fake = TRUE;
diff --git a/src/devices/wifi/nm-wifi-ap.h b/src/devices/wifi/nm-wifi-ap.h
index 4608c6ff60..da360325f6 100644
--- a/src/devices/wifi/nm-wifi-ap.h
+++ b/src/devices/wifi/nm-wifi-ap.h
@@ -64,23 +64,25 @@ nm_wifi_ap_get_supplicant_path(NMWifiAP *ap)
return ap->_supplicant_path;
}
-GBytes * nm_wifi_ap_get_ssid(const NMWifiAP *ap);
-gboolean nm_wifi_ap_set_ssid_arr(NMWifiAP *ap, const guint8 *ssid, gsize ssid_len);
-gboolean nm_wifi_ap_set_ssid(NMWifiAP *ap, GBytes *ssid);
-const char * nm_wifi_ap_get_address(const NMWifiAP *ap);
-gboolean nm_wifi_ap_set_address(NMWifiAP *ap, const char *addr);
-NM80211Mode nm_wifi_ap_get_mode(NMWifiAP *ap);
-gboolean nm_wifi_ap_is_hotspot(NMWifiAP *ap);
-gint8 nm_wifi_ap_get_strength(NMWifiAP *ap);
-gboolean nm_wifi_ap_set_strength(NMWifiAP *ap, gint8 strength);
-guint32 nm_wifi_ap_get_freq(NMWifiAP *ap);
-gboolean nm_wifi_ap_set_freq(NMWifiAP *ap, guint32 freq);
-guint32 nm_wifi_ap_get_max_bitrate(NMWifiAP *ap);
-gboolean nm_wifi_ap_set_max_bitrate(NMWifiAP *ap, guint32 bitrate);
-gboolean nm_wifi_ap_get_fake(const NMWifiAP *ap);
-gboolean nm_wifi_ap_set_fake(NMWifiAP *ap, gboolean fake);
-NM80211ApFlags nm_wifi_ap_get_flags(const NMWifiAP *self);
-gboolean nm_wifi_ap_get_metered(const NMWifiAP *self);
+GBytes * nm_wifi_ap_get_ssid(const NMWifiAP *ap);
+gboolean nm_wifi_ap_set_ssid(NMWifiAP *ap, GBytes *ssid);
+const char * nm_wifi_ap_get_address(const NMWifiAP *ap);
+gboolean nm_wifi_ap_set_address(NMWifiAP *ap, const char *addr);
+gboolean nm_wifi_ap_set_address_bin(NMWifiAP *ap, const NMEtherAddr *addr);
+NM80211Mode nm_wifi_ap_get_mode(NMWifiAP *ap);
+gboolean nm_wifi_ap_is_hotspot(NMWifiAP *ap);
+gint8 nm_wifi_ap_get_strength(NMWifiAP *ap);
+gboolean nm_wifi_ap_set_strength(NMWifiAP *ap, gint8 strength);
+guint32 nm_wifi_ap_get_freq(NMWifiAP *ap);
+gboolean nm_wifi_ap_set_freq(NMWifiAP *ap, guint32 freq);
+guint32 nm_wifi_ap_get_max_bitrate(NMWifiAP *ap);
+gboolean nm_wifi_ap_set_max_bitrate(NMWifiAP *ap, guint32 bitrate);
+gboolean nm_wifi_ap_get_fake(const NMWifiAP *ap);
+gboolean nm_wifi_ap_set_fake(NMWifiAP *ap, gboolean fake);
+NM80211ApFlags nm_wifi_ap_get_flags(const NMWifiAP *self);
+gboolean nm_wifi_ap_get_metered(const NMWifiAP *self);
+NM80211ApSecurityFlags nm_wifi_ap_get_wpa_flags(const NMWifiAP *self);
+NM80211ApSecurityFlags nm_wifi_ap_get_rsn_flags(const NMWifiAP *self);
const char *
nm_wifi_ap_to_string(const NMWifiAP *self, char *str_buf, gulong buf_len, gint64 now_msec);
diff --git a/src/devices/wifi/nm-wifi-factory.c b/src/devices/wifi/nm-wifi-factory.c
index 1d1407592a..bbf56abfa9 100644
--- a/src/devices/wifi/nm-wifi-factory.c
+++ b/src/devices/wifi/nm-wifi-factory.c
@@ -52,7 +52,7 @@ NM_DEVICE_FACTORY_DECLARE_TYPES(
G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
- return (NMDeviceFactory *) g_object_new(NM_TYPE_WIFI_FACTORY, NULL);
+ return g_object_new(NM_TYPE_WIFI_FACTORY, NULL);
}
/*****************************************************************************/
diff --git a/src/devices/wifi/nm-wifi-p2p-peer.c b/src/devices/wifi/nm-wifi-p2p-peer.c
index a194f168c0..cfcf96ab90 100644
--- a/src/devices/wifi/nm-wifi-p2p-peer.c
+++ b/src/devices/wifi/nm-wifi-p2p-peer.c
@@ -407,7 +407,7 @@ nm_wifi_p2p_peer_update_from_properties(NMWifiP2PPeer *peer, const NMSupplicantP
/* We currently only use the groups information internally to check if
* the peer is still joined. */
- if (!_nm_utils_strv_equal((char **) priv->groups, (char **) peer_info->groups)) {
+ if (!nm_utils_strv_equal(priv->groups, peer_info->groups)) {
g_free(priv->groups);
priv->groups = nm_utils_strv_dup_packed(peer_info->groups, -1);
changed |= TRUE;
diff --git a/src/devices/wifi/nm-wifi-utils.c b/src/devices/wifi/nm-wifi-utils.c
index e371d19755..3fa33256ad 100644
--- a/src/devices/wifi/nm-wifi-utils.c
+++ b/src/devices/wifi/nm-wifi-utils.c
@@ -886,34 +886,49 @@ nm_wifi_utils_is_manf_default_ssid(GBytes *ssid)
return FALSE;
}
-NMIwdNetworkSecurity
-nm_wifi_connection_get_iwd_security(NMConnection *connection, gboolean *mapped)
+/* To be used for connections where the SSID has been validated before */
+gboolean
+nm_wifi_connection_get_iwd_ssid_and_security(NMConnection * connection,
+ char ** ssid,
+ NMIwdNetworkSecurity *security)
{
+ NMSettingWireless * s_wireless;
NMSettingWirelessSecurity *s_wireless_sec;
const char * key_mgmt = NULL;
- if (!nm_connection_get_setting_wireless(connection))
- goto error;
+ s_wireless = nm_connection_get_setting_wireless(connection);
+ if (!s_wireless)
+ return FALSE;
+
+ if (ssid) {
+ GBytes * bytes = nm_setting_wireless_get_ssid(s_wireless);
+ gsize ssid_len;
+ const char *ssid_str = (const char *) g_bytes_get_data(bytes, &ssid_len);
- NM_SET_OUT(mapped, TRUE);
+ nm_assert(bytes && g_utf8_validate(ssid_str, ssid_len, NULL));
+ NM_SET_OUT(ssid, g_strndup(ssid_str, ssid_len));
+ }
+
+ if (!security)
+ return TRUE;
s_wireless_sec = nm_connection_get_setting_wireless_security(connection);
- if (!s_wireless_sec)
- return NM_IWD_NETWORK_SECURITY_NONE;
+ if (!s_wireless_sec) {
+ NM_SET_OUT(security, NM_IWD_NETWORK_SECURITY_NONE);
+ return TRUE;
+ }
key_mgmt = nm_setting_wireless_security_get_key_mgmt(s_wireless_sec);
nm_assert(key_mgmt);
if (NM_IN_STRSET(key_mgmt, "none", "ieee8021x"))
- return NM_IWD_NETWORK_SECURITY_WEP;
-
- if (nm_streq(key_mgmt, "wpa-psk"))
- return NM_IWD_NETWORK_SECURITY_PSK;
-
- if (nm_streq(key_mgmt, "wpa-eap"))
- return NM_IWD_NETWORK_SECURITY_8021X;
+ NM_SET_OUT(security, NM_IWD_NETWORK_SECURITY_WEP);
+ else if (nm_streq(key_mgmt, "wpa-psk"))
+ NM_SET_OUT(security, NM_IWD_NETWORK_SECURITY_PSK);
+ else if (nm_streq(key_mgmt, "wpa-eap"))
+ NM_SET_OUT(security, NM_IWD_NETWORK_SECURITY_8021X);
+ else
+ return FALSE;
-error:
- NM_SET_OUT(mapped, FALSE);
- return NM_IWD_NETWORK_SECURITY_NONE;
+ return TRUE;
}
diff --git a/src/devices/wifi/nm-wifi-utils.h b/src/devices/wifi/nm-wifi-utils.h
index 678b353b1e..e6cec37d4a 100644
--- a/src/devices/wifi/nm-wifi-utils.h
+++ b/src/devices/wifi/nm-wifi-utils.h
@@ -32,7 +32,8 @@ gboolean nm_wifi_utils_complete_connection(GBytes * ssid,
gboolean nm_wifi_utils_is_manf_default_ssid(GBytes *ssid);
-NMIwdNetworkSecurity nm_wifi_connection_get_iwd_security(NMConnection *connection,
- gboolean * mapped);
+gboolean nm_wifi_connection_get_iwd_ssid_and_security(NMConnection * connection,
+ char ** ssid,
+ NMIwdNetworkSecurity *security);
#endif /* __NM_WIFI_UTILS_H__ */
diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c
index f77de85aac..5b8b3bd29d 100644
--- a/src/devices/wwan/nm-device-modem.c
+++ b/src/devices/wwan/nm-device-modem.c
@@ -16,8 +16,8 @@
#include "NetworkManagerUtils.h"
#include "nm-core-internal.h"
+#define _NMLOG_DEVICE_TYPE NMDeviceModem
#include "devices/nm-device-logging.h"
-_LOG_DECLARE_SELF(NMDeviceModem);
/*****************************************************************************/
diff --git a/src/devices/wwan/nm-modem-ofono.c b/src/devices/wwan/nm-modem-ofono.c
index d8d0893bf8..ec53186639 100644
--- a/src/devices/wwan/nm-modem-ofono.c
+++ b/src/devices/wwan/nm-modem-ofono.c
@@ -1160,20 +1160,20 @@ nm_modem_ofono_new(const char *path)
*/
basename = g_path_get_basename(path);
- return (NMModem *) g_object_new(NM_TYPE_MODEM_OFONO,
- NM_MODEM_PATH,
- path,
- NM_MODEM_UID,
- basename,
- NM_MODEM_DEVICE_ID,
- basename,
- NM_MODEM_CONTROL_PORT,
- "ofono", /* mandatory */
- NM_MODEM_DRIVER,
- "ofono",
- NM_MODEM_STATE,
- (int) NM_MODEM_STATE_INITIALIZING,
- NULL);
+ return g_object_new(NM_TYPE_MODEM_OFONO,
+ NM_MODEM_PATH,
+ path,
+ NM_MODEM_UID,
+ basename,
+ NM_MODEM_DEVICE_ID,
+ basename,
+ NM_MODEM_CONTROL_PORT,
+ "ofono", /* mandatory */
+ NM_MODEM_DRIVER,
+ "ofono",
+ NM_MODEM_STATE,
+ (int) NM_MODEM_STATE_INITIALIZING,
+ NULL);
}
static void
diff --git a/src/devices/wwan/nm-wwan-factory.c b/src/devices/wwan/nm-wwan-factory.c
index 1c3406daed..c9c4758419 100644
--- a/src/devices/wwan/nm-wwan-factory.c
+++ b/src/devices/wwan/nm-wwan-factory.c
@@ -54,7 +54,7 @@ NM_DEVICE_FACTORY_DECLARE_TYPES(NM_DEVICE_FACTORY_DECLARE_LINK_TYPES(
G_MODULE_EXPORT NMDeviceFactory *
nm_device_factory_create(GError **error)
{
- return (NMDeviceFactory *) g_object_new(NM_TYPE_WWAN_FACTORY, NULL);
+ return g_object_new(NM_TYPE_WWAN_FACTORY, NULL);
}
/*****************************************************************************/
diff --git a/src/dns/nm-dns-dnsmasq.c b/src/dns/nm-dns-dnsmasq.c
index 97f1dfabf8..a560723807 100644
--- a/src/dns/nm-dns-dnsmasq.c
+++ b/src/dns/nm-dns-dnsmasq.c
@@ -804,7 +804,7 @@ add_global_config(NMDnsDnsmasq * self,
}
static void
-add_ip_config(NMDnsDnsmasq *self, GVariantBuilder *servers, const NMDnsIPConfigData *ip_data)
+add_ip_config(NMDnsDnsmasq *self, GVariantBuilder *servers, const NMDnsConfigIPData *ip_data)
{
NMIPConfig * ip_config = ip_data->ip_config;
gconstpointer addr;
@@ -850,7 +850,7 @@ create_update_args(NMDnsDnsmasq * self,
const char * hostname)
{
GVariantBuilder servers;
- const NMDnsIPConfigData *ip_data;
+ const NMDnsConfigIPData *ip_data;
g_variant_builder_init(&servers, G_VARIANT_TYPE("aas"));
diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c
index 3fc9a3963c..ac7021db4b 100644
--- a/src/dns/nm-dns-manager.c
+++ b/src/dns/nm-dns-manager.c
@@ -80,14 +80,18 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDnsManager, PROP_MODE, PROP_RC_MANAGER, PROP_CONF
static guint signals[LAST_SIGNAL] = {0};
typedef struct {
- GHashTable *configs;
- CList ip_config_lst_head;
- GVariant * config_variant;
+ GHashTable *configs_dict;
+ CList configs_lst_head;
- NMDnsIPConfigData *best_ip_config_4;
- NMDnsIPConfigData *best_ip_config_6;
+ CList ip_configs_lst_head;
+ GVariant *config_variant;
- bool ip_config_lst_need_sort : 1;
+ NMDnsConfigIPData *best_ip_config_4;
+ NMDnsConfigIPData *best_ip_config_6;
+
+ bool ip_configs_lst_need_sort : 1;
+
+ bool configs_lst_need_sort : 1;
bool dns_touched : 1;
bool is_stopped : 1;
@@ -158,7 +162,7 @@ NM_DEFINE_SINGLETON_GETTER(NMDnsManager, nm_dns_manager_get, NM_TYPE_DNS_MANAGER
/*****************************************************************************/
static void
-_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsIPConfigData *ip_data);
+_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsConfigIPData *ip_data);
/*****************************************************************************/
@@ -207,7 +211,7 @@ static NM_UTILS_LOOKUP_STR_DEFINE(
/*****************************************************************************/
static void
-_ASSERT_config_data(const NMDnsConfigData *data)
+_ASSERT_dns_config_data(const NMDnsConfigData *data)
{
nm_assert(data);
nm_assert(NM_IS_DNS_MANAGER(data->self));
@@ -215,10 +219,10 @@ _ASSERT_config_data(const NMDnsConfigData *data)
}
static void
-_ASSERT_ip_config_data(const NMDnsIPConfigData *ip_data)
+_ASSERT_dns_config_ip_data(const NMDnsConfigIPData *ip_data)
{
nm_assert(ip_data);
- _ASSERT_config_data(ip_data->data);
+ _ASSERT_dns_config_data(ip_data->data);
nm_assert(NM_IS_IP_CONFIG(ip_data->ip_config));
nm_assert(c_list_contains(&ip_data->data->data_lst_head, &ip_data->data_lst));
nm_assert(ip_data->data->ifindex == nm_ip_config_get_ifindex(ip_data->ip_config));
@@ -244,23 +248,25 @@ _ASSERT_ip_config_data(const NMDnsIPConfigData *ip_data)
#endif
}
-static NMDnsIPConfigData *
-_ip_config_data_new(NMDnsConfigData *data, NMIPConfig *ip_config, NMDnsIPConfigType ip_config_type)
+static NMDnsConfigIPData *
+_dns_config_ip_data_new(NMDnsConfigData * data,
+ NMIPConfig * ip_config,
+ NMDnsIPConfigType ip_config_type)
{
- NMDnsIPConfigData *ip_data;
+ NMDnsConfigIPData *ip_data;
- _ASSERT_config_data(data);
+ _ASSERT_dns_config_data(data);
nm_assert(NM_IS_IP_CONFIG(ip_config));
nm_assert(ip_config_type != NM_DNS_IP_CONFIG_TYPE_REMOVED);
- ip_data = g_slice_new(NMDnsIPConfigData);
- *ip_data = (NMDnsIPConfigData){
+ ip_data = g_slice_new(NMDnsConfigIPData);
+ *ip_data = (NMDnsConfigIPData){
.data = data,
.ip_config = g_object_ref(ip_config),
.ip_config_type = ip_config_type,
};
c_list_link_tail(&data->data_lst_head, &ip_data->data_lst);
- c_list_link_tail(&NM_DNS_MANAGER_GET_PRIVATE(data->self)->ip_config_lst_head,
+ c_list_link_tail(&NM_DNS_MANAGER_GET_PRIVATE(data->self)->ip_configs_lst_head,
&ip_data->ip_config_lst);
g_signal_connect(ip_config,
@@ -269,14 +275,14 @@ _ip_config_data_new(NMDnsConfigData *data, NMIPConfig *ip_config, NMDnsIPConfigT
(GCallback) _ip_config_dns_priority_changed,
ip_data);
- _ASSERT_ip_config_data(ip_data);
+ _ASSERT_dns_config_ip_data(ip_data);
return ip_data;
}
static void
-_ip_config_data_free(NMDnsIPConfigData *ip_data)
+_dns_config_ip_data_free(NMDnsConfigIPData *ip_data)
{
- _ASSERT_ip_config_data(ip_data);
+ _ASSERT_dns_config_ip_data(ip_data);
c_list_unlink_stale(&ip_data->data_lst);
c_list_unlink_stale(&ip_data->ip_config_lst);
@@ -292,15 +298,15 @@ _ip_config_data_free(NMDnsIPConfigData *ip_data)
nm_g_slice_free(ip_data);
}
-static NMDnsIPConfigData *
-_config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config)
+static NMDnsConfigIPData *
+_dns_config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config)
{
- NMDnsIPConfigData *ip_data;
+ NMDnsConfigIPData *ip_data;
- _ASSERT_config_data(data);
+ _ASSERT_dns_config_data(data);
c_list_for_each_entry (ip_data, &data->data_lst_head, data_lst) {
- _ASSERT_ip_config_data(ip_data);
+ _ASSERT_dns_config_ip_data(ip_data);
if (ip_data->ip_config == ip_config)
return ip_data;
@@ -309,19 +315,20 @@ _config_data_find_ip_config(NMDnsConfigData *data, NMIPConfig *ip_config)
}
static void
-_config_data_free(NMDnsConfigData *data)
+_dns_config_data_free(NMDnsConfigData *data)
{
- _ASSERT_config_data(data);
+ _ASSERT_dns_config_data(data);
nm_assert(c_list_is_empty(&data->data_lst_head));
+ c_list_unlink_stale(&data->configs_lst);
nm_g_slice_free(data);
}
static int
-_ip_config_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
+_mgr_get_ip_configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
{
- const NMDnsIPConfigData *a = c_list_entry(a_lst, NMDnsIPConfigData, ip_config_lst);
- const NMDnsIPConfigData *b = c_list_entry(b_lst, NMDnsIPConfigData, ip_config_lst);
+ const NMDnsConfigIPData *a = c_list_entry(a_lst, NMDnsConfigIPData, ip_config_lst);
+ const NMDnsConfigIPData *b = c_list_entry(b_lst, NMDnsConfigIPData, ip_config_lst);
/* Configurations with lower priority value first */
NM_CMP_DIRECT(nm_ip_config_get_dns_priority(a->ip_config),
@@ -334,16 +341,39 @@ _ip_config_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data
}
static CList *
-_ip_config_lst_head(NMDnsManager *self)
+_mgr_get_ip_configs_lst_head(NMDnsManager *self)
{
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
- if (priv->ip_config_lst_need_sort) {
- priv->ip_config_lst_need_sort = FALSE;
- c_list_sort(&priv->ip_config_lst_head, _ip_config_lst_cmp, NULL);
+ if (G_UNLIKELY(priv->ip_configs_lst_need_sort)) {
+ priv->ip_configs_lst_need_sort = FALSE;
+ c_list_sort(&priv->ip_configs_lst_head, _mgr_get_ip_configs_lst_cmp, NULL);
}
- return &priv->ip_config_lst_head;
+ return &priv->ip_configs_lst_head;
+}
+
+static int
+_mgr_get_configs_lst_cmp(const CList *a_lst, const CList *b_lst, const void *user_data)
+{
+ const NMDnsConfigData *a = c_list_entry(a_lst, NMDnsConfigData, configs_lst);
+ const NMDnsConfigData *b = c_list_entry(b_lst, NMDnsConfigData, configs_lst);
+
+ NM_CMP_FIELD(b, a, ifindex);
+ return nm_assert_unreachable_val(0);
+}
+
+_nm_unused static CList *
+_mgr_get_configs_lst_head(NMDnsManager *self)
+{
+ NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
+
+ if (G_UNLIKELY(priv->configs_lst_need_sort)) {
+ priv->configs_lst_need_sort = FALSE;
+ c_list_sort(&priv->configs_lst_head, _mgr_get_configs_lst_cmp, NULL);
+ }
+
+ return &priv->configs_lst_head;
}
/*****************************************************************************/
@@ -1077,7 +1107,7 @@ static void
compute_hash(NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer[HASH_LEN])
{
nm_auto_free_checksum GChecksum *sum = NULL;
- NMDnsIPConfigData * ip_data;
+ NMDnsConfigIPData * ip_data;
sum = g_checksum_new(G_CHECKSUM_SHA1);
nm_assert(HASH_LEN == g_checksum_type_get_length(G_CHECKSUM_SHA1));
@@ -1089,7 +1119,7 @@ compute_hash(NMDnsManager *self, const NMGlobalDnsConfig *global, guint8 buffer[
/* FIXME(ip-config-checksum): this relies on the fact that an IP
* configuration without DNS parameters gives a zero checksum. */
- head = _ip_config_lst_head(self);
+ head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst)
nm_ip_config_hash(ip_data->ip_config, sum, TRUE);
}
@@ -1196,15 +1226,15 @@ _collect_resolv_conf_data(NMDnsManager * self,
else {
nm_auto_free_gstring GString *tmp_gstring = NULL;
int prio, first_prio = 0;
- const NMDnsIPConfigData * ip_data;
+ const NMDnsConfigIPData * ip_data;
const CList * head;
gboolean is_first = TRUE;
- head = _ip_config_lst_head(self);
+ head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) {
gboolean skip = FALSE;
- _ASSERT_ip_config_data(ip_data);
+ _ASSERT_dns_config_ip_data(ip_data);
prio = nm_ip_config_get_dns_priority(ip_data->ip_config);
@@ -1259,41 +1289,35 @@ _collect_resolv_conf_data(NMDnsManager * self,
*out_nis_domain = rc.nis_domain;
}
+/*****************************************************************************/
+
static char **
get_ip_rdns_domains(NMIPConfig *ip_config)
{
- int addr_family = nm_ip_config_get_addr_family(ip_config);
- char ** strv;
- GPtrArray * domains = NULL;
- NMDedupMultiIter ipconf_iter;
+ int addr_family = nm_ip_config_get_addr_family(ip_config);
+ char ** strv;
+ GPtrArray * domains;
+ NMDedupMultiIter ipconf_iter;
+ const NMPlatformIPAddress *address;
+ const NMPlatformIPRoute * route;
nm_assert_addr_family(addr_family);
domains = g_ptr_array_sized_new(5);
- if (addr_family == AF_INET) {
- NMIP4Config * ip4 = (gpointer) ip_config;
- const NMPlatformIP4Address *address;
- const NMPlatformIP4Route * route;
-
- nm_ip_config_iter_ip4_address_for_each (&ipconf_iter, ip4, &address)
- nm_utils_get_reverse_dns_domains_ip4(address->address, address->plen, domains);
-
- nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, ip4, &route) {
- if (!NM_PLATFORM_IP_ROUTE_IS_DEFAULT(route))
- nm_utils_get_reverse_dns_domains_ip4(route->network, route->plen, domains);
- }
- } else {
- NMIP6Config * ip6 = (gpointer) ip_config;
- const NMPlatformIP6Address *address;
- const NMPlatformIP6Route * route;
-
- nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, ip6, &address)
- nm_utils_get_reverse_dns_domains_ip6(&address->address, address->plen, domains);
+ nm_ip_config_iter_ip_address_for_each (&ipconf_iter, ip_config, &address) {
+ nm_utils_get_reverse_dns_domains_ip(addr_family,
+ address->address_ptr,
+ address->plen,
+ domains);
+ }
- nm_ip_config_iter_ip6_route_for_each (&ipconf_iter, ip6, &route) {
- if (!NM_PLATFORM_IP_ROUTE_IS_DEFAULT(route))
- nm_utils_get_reverse_dns_domains_ip6(&route->network, route->plen, domains);
+ nm_ip_config_iter_ip_route_for_each (&ipconf_iter, ip_config, &route) {
+ if (!NM_PLATFORM_IP_ROUTE_IS_DEFAULT(route)) {
+ nm_utils_get_reverse_dns_domains_ip(addr_family,
+ route->network_ptr,
+ route->plen,
+ domains);
}
}
@@ -1307,7 +1331,7 @@ get_ip_rdns_domains(NMIPConfig *ip_config)
}
static gboolean
-domain_ht_get_priority(GHashTable *ht, const char *domain, int *out_priority)
+_domain_track_get_priority(GHashTable *ht, const char *domain, int *out_priority)
{
gpointer ptr;
@@ -1321,11 +1345,11 @@ domain_ht_get_priority(GHashTable *ht, const char *domain, int *out_priority)
/* Check if the domain is shadowed by a parent domain with more negative priority */
static gboolean
-domain_is_shadowed(GHashTable * ht,
- const char * domain,
- int priority,
- const char **out_parent,
- int * out_parent_priority)
+_domain_track_is_shadowed(GHashTable * ht,
+ const char * domain,
+ int priority,
+ const char **out_parent,
+ int * out_parent_priority)
{
char *parent;
int parent_priority;
@@ -1335,7 +1359,7 @@ domain_is_shadowed(GHashTable * ht,
nm_assert(!g_hash_table_contains(ht, domain));
- if (domain_ht_get_priority(ht, "", &parent_priority)) {
+ if (_domain_track_get_priority(ht, "", &parent_priority)) {
nm_assert(parent_priority <= priority);
if (parent_priority < 0 && parent_priority < priority) {
*out_parent = "";
@@ -1347,7 +1371,7 @@ domain_is_shadowed(GHashTable * ht,
parent = strchr(domain, '.');
while (parent && parent[1]) {
parent++;
- if (domain_ht_get_priority(ht, parent, &parent_priority)) {
+ if (_domain_track_get_priority(ht, parent, &parent_priority)) {
nm_assert(parent_priority <= priority);
if (parent_priority < 0 && parent_priority < priority) {
*out_parent = parent;
@@ -1362,18 +1386,18 @@ domain_is_shadowed(GHashTable * ht,
}
static void
-rebuild_domain_lists(NMDnsManager *self)
+_mgr_configs_data_construct(NMDnsManager *self)
{
- NMDnsIPConfigData *ip_data;
+ NMDnsConfigIPData *ip_data;
gs_unref_hashtable GHashTable *ht = NULL;
gs_unref_hashtable GHashTable *wildcard_entries = NULL;
CList * head;
int prev_priority = G_MININT;
- head = _ip_config_lst_head(self);
+ head = _mgr_get_ip_configs_lst_head(self);
#if NM_MORE_ASSERTS
- /* we call clear_domain_lists() at the end of update. We
+ /* we call _mgr_configs_data_clear() at the end of update. We
* don't expect any domain settings here. */
c_list_for_each_entry (ip_data, head, ip_config_lst) {
nm_assert(!ip_data->domains.search);
@@ -1496,7 +1520,7 @@ rebuild_domain_lists(NMDnsManager *self)
break;
/* Remove domains with lower priority */
- if (domain_ht_get_priority(ht, domain_clean, &old_priority)) {
+ if (_domain_track_get_priority(ht, domain_clean, &old_priority)) {
nm_assert(old_priority <= priority);
if (old_priority < priority) {
_LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) because it already exists "
@@ -1511,7 +1535,11 @@ rebuild_domain_lists(NMDnsManager *self)
old_priority);
continue;
}
- } else if (domain_is_shadowed(ht, domain_clean, priority, &parent, &parent_priority)) {
+ } else if (_domain_track_is_shadowed(ht,
+ domain_clean,
+ priority,
+ &parent,
+ &parent_priority)) {
_LOGT("plugin: drop domain %s%s%s (i=%d, p=%d) shadowed by '%s' (p=%d)",
NM_PRINT_FMT_QUOTED(!check_default_route,
"'",
@@ -1578,12 +1606,12 @@ rebuild_domain_lists(NMDnsManager *self)
}
static void
-clear_domain_lists(NMDnsManager *self)
+_mgr_configs_data_clear(NMDnsManager *self)
{
- NMDnsIPConfigData *ip_data;
+ NMDnsConfigIPData *ip_data;
CList * head;
- head = _ip_config_lst_head(self);
+ head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) {
nm_clear_g_free(&ip_data->domains.search);
nm_clear_pointer(&ip_data->domains.reverse, g_strfreev);
@@ -1593,6 +1621,8 @@ clear_domain_lists(NMDnsManager *self)
}
}
+/*****************************************************************************/
+
static gboolean
update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
{
@@ -1645,12 +1675,12 @@ update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
&nis_domain);
if (priv->plugin || priv->sd_resolve_plugin)
- rebuild_domain_lists(self);
+ _mgr_configs_data_construct(self);
if (priv->sd_resolve_plugin) {
nm_dns_plugin_update(priv->sd_resolve_plugin,
global_config,
- _ip_config_lst_head(self),
+ _mgr_get_ip_configs_lst_head(self),
priv->hostname,
NULL);
}
@@ -1672,7 +1702,7 @@ update_dns(NMDnsManager *self, gboolean no_caching, GError **error)
_LOGD("update-dns: updating plugin %s", plugin_name);
if (!nm_dns_plugin_update(plugin,
global_config,
- _ip_config_lst_head(self),
+ _mgr_get_ip_configs_lst_head(self),
priv->hostname,
&plugin_error)) {
_LOGW("update-dns: plugin %s update failed: %s", plugin_name, plugin_error->message);
@@ -1689,7 +1719,7 @@ plugin_skip:;
/* Clear the generated search list as it points to
* strings owned by IP configurations and we can't
* guarantee they stay alive. */
- clear_domain_lists(self);
+ _mgr_configs_data_clear(self);
update_resolv_conf_no_stub(self,
NM_CAST_STRV_CC(searches),
@@ -1702,6 +1732,8 @@ plugin_skip:;
*/
if (caching) {
const char *lladdr = "127.0.0.1";
+ gboolean need_edns0;
+ gboolean need_trust;
if (NM_IS_DNS_SYSTEMD_RESOLVED(priv->plugin)) {
/* systemd-resolved uses a different link-local address */
@@ -1711,6 +1743,21 @@ plugin_skip:;
g_strfreev(nameservers);
nameservers = g_new0(char *, 2);
nameservers[0] = g_strdup(lladdr);
+
+ need_edns0 = nm_utils_strv_find_first(options, -1, NM_SETTING_DNS_OPTION_EDNS0) < 0;
+ need_trust = nm_utils_strv_find_first(options, -1, NM_SETTING_DNS_OPTION_TRUST_AD) < 0;
+
+ if (need_edns0 || need_trust) {
+ gsize len;
+
+ len = NM_PTRARRAY_LEN(options);
+ options = g_realloc(options, sizeof(char *) * (len + 3u));
+ if (need_edns0)
+ options[len++] = g_strdup(NM_SETTING_DNS_OPTION_EDNS0);
+ if (need_trust)
+ options[len++] = g_strdup(NM_SETTING_DNS_OPTION_TRUST_AD);
+ options[len] = NULL;
+ }
}
if (do_update) {
@@ -1788,11 +1835,11 @@ plugin_skip:;
/*****************************************************************************/
static void
-_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsIPConfigData *ip_data)
+_ip_config_dns_priority_changed(gpointer config, GParamSpec *pspec, NMDnsConfigIPData *ip_data)
{
- _ASSERT_ip_config_data(ip_data);
+ _ASSERT_dns_config_ip_data(ip_data);
- NM_DNS_MANAGER_GET_PRIVATE(ip_data->data->self)->ip_config_lst_need_sort = TRUE;
+ NM_DNS_MANAGER_GET_PRIVATE(ip_data->data->self)->ip_configs_lst_need_sort = TRUE;
}
gboolean
@@ -1801,10 +1848,10 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
NMDnsIPConfigType ip_config_type)
{
NMDnsManagerPrivate *priv;
- NMDnsIPConfigData * ip_data;
+ NMDnsConfigIPData * ip_data;
NMDnsConfigData * data;
int ifindex;
- NMDnsIPConfigData ** p_best;
+ NMDnsConfigIPData ** p_best;
g_return_val_if_fail(NM_IS_DNS_MANAGER(self), FALSE);
g_return_val_if_fail(NM_IS_IP_CONFIG(ip_config), FALSE);
@@ -1814,11 +1861,11 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
priv = NM_DNS_MANAGER_GET_PRIVATE(self);
- data = g_hash_table_lookup(priv->configs, &ifindex);
+ data = g_hash_table_lookup(priv->configs_dict, &ifindex);
if (!data)
ip_data = NULL;
else
- ip_data = _config_data_find_ip_config(data, ip_config);
+ ip_data = _dns_config_data_find_ip_config(data, ip_config);
if (ip_config_type == NM_DNS_IP_CONFIG_TYPE_REMOVED) {
if (!ip_data)
@@ -1828,9 +1875,9 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
if (priv->best_ip_config_6 == ip_data)
priv->best_ip_config_6 = NULL;
/* deleting a config doesn't invalidate the configs' sort order. */
- _ip_config_data_free(ip_data);
+ _dns_config_ip_data_free(ip_data);
if (c_list_is_empty(&data->data_lst_head))
- g_hash_table_remove(priv->configs, &ifindex);
+ g_hash_table_remove(priv->configs_dict, &ifindex);
goto changed;
}
@@ -1846,16 +1893,18 @@ nm_dns_manager_set_ip_config(NMDnsManager * self,
.self = self,
.data_lst_head = C_LIST_INIT(data->data_lst_head),
};
- _ASSERT_config_data(data);
- g_hash_table_add(priv->configs, data);
+ _ASSERT_dns_config_data(data);
+ g_hash_table_add(priv->configs_dict, data);
+ c_list_link_tail(&priv->configs_lst_head, &data->configs_lst);
+ priv->configs_lst_need_sort = TRUE;
}
if (!ip_data)
- ip_data = _ip_config_data_new(data, ip_config, ip_config_type);
+ ip_data = _dns_config_ip_data_new(data, ip_config, ip_config_type);
else
ip_data->ip_config_type = ip_config_type;
- priv->ip_config_lst_need_sort = TRUE;
+ priv->ip_configs_lst_need_sort = TRUE;
p_best = NM_IS_IP4_CONFIG(ip_config) ? &priv->best_ip_config_4 : &priv->best_ip_config_6;
@@ -2375,7 +2424,7 @@ _get_config_variant(NMDnsManager *self)
NMGlobalDnsConfig * global_config;
gs_free char * str = NULL;
GVariantBuilder builder;
- NMDnsIPConfigData * ip_data;
+ NMDnsConfigIPData * ip_data;
const CList * head;
gs_unref_ptrarray GPtrArray *array_domains = NULL;
@@ -2391,7 +2440,7 @@ _get_config_variant(NMDnsManager *self)
g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}"));
- head = _ip_config_lst_head(self);
+ head = _mgr_get_ip_configs_lst_head(self);
c_list_for_each_entry (ip_data, head, ip_config_lst) {
const NMIPConfig *ip_config = ip_data->ip_config;
GVariantBuilder entry_builder;
@@ -2496,15 +2545,16 @@ nm_dns_manager_init(NMDnsManager *self)
_LOGT("creating...");
- c_list_init(&priv->ip_config_lst_head);
+ c_list_init(&priv->configs_lst_head);
+ c_list_init(&priv->ip_configs_lst_head);
priv->config = g_object_ref(nm_config_get());
G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NMDnsConfigData, ifindex) == 0);
- priv->configs = g_hash_table_new_full(nm_pint_hash,
- nm_pint_equals,
- (GDestroyNotify) _config_data_free,
- NULL);
+ priv->configs_dict = g_hash_table_new_full(nm_pint_hash,
+ nm_pint_equals,
+ (GDestroyNotify) _dns_config_data_free,
+ NULL);
/* Set the initial hash */
compute_hash(self, NULL, NM_DNS_MANAGER_GET_PRIVATE(self)->hash);
@@ -2521,7 +2571,7 @@ dispose(GObject *object)
{
NMDnsManager * self = NM_DNS_MANAGER(object);
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self);
- NMDnsIPConfigData * ip_data, *ip_data_safe;
+ NMDnsConfigIPData * ip_data, *ip_data_safe;
_LOGT("disposing");
@@ -2537,10 +2587,11 @@ dispose(GObject *object)
priv->best_ip_config_4 = NULL;
priv->best_ip_config_6 = NULL;
- c_list_for_each_entry_safe (ip_data, ip_data_safe, &priv->ip_config_lst_head, ip_config_lst)
- _ip_config_data_free(ip_data);
+ c_list_for_each_entry_safe (ip_data, ip_data_safe, &priv->ip_configs_lst_head, ip_config_lst)
+ _dns_config_ip_data_free(ip_data);
- nm_clear_pointer(&priv->configs, g_hash_table_destroy);
+ nm_clear_pointer(&priv->configs_dict, g_hash_table_destroy);
+ nm_assert(c_list_is_empty(&priv->configs_lst_head));
nm_clear_g_source(&priv->plugin_ratelimit.timer);
diff --git a/src/dns/nm-dns-manager.h b/src/dns/nm-dns-manager.h
index fb2f36d222..7f104ebe03 100644
--- a/src/dns/nm-dns-manager.h
+++ b/src/dns/nm-dns-manager.h
@@ -25,6 +25,8 @@ enum {
NM_DNS_PRIORITY_DEFAULT_VPN = 50,
};
+/*****************************************************************************/
+
struct _NMDnsConfigData;
struct _NMDnsManager;
@@ -60,14 +62,17 @@ typedef struct {
* With systemd-resolved, this is the value for SetLinkDefaultRoute(). */
bool has_default_route : 1;
} domains;
-} NMDnsIPConfigData;
+} NMDnsConfigIPData;
typedef struct _NMDnsConfigData {
int ifindex;
struct _NMDnsManager *self;
CList data_lst_head;
+ CList configs_lst;
} NMDnsConfigData;
+/*****************************************************************************/
+
#define NM_TYPE_DNS_MANAGER (nm_dns_manager_get_type())
#define NM_DNS_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST((o), NM_TYPE_DNS_MANAGER, NMDnsManager))
#define NM_DNS_MANAGER_CLASS(k) \
diff --git a/src/dns/nm-dns-plugin.h b/src/dns/nm-dns-plugin.h
index 5e87f59b2d..b5cffccb4d 100644
--- a/src/dns/nm-dns-plugin.h
+++ b/src/dns/nm-dns-plugin.h
@@ -26,7 +26,7 @@ typedef struct {
GObjectClass parent;
/* Called when DNS information is changed. 'configs' is an array
- * of pointers to NMDnsIPConfigData sorted by priority.
+ * of pointers to NMDnsConfigIPData sorted by priority.
* 'global_config' is the optional global DNS
* configuration.
*/
diff --git a/src/dns/nm-dns-systemd-resolved.c b/src/dns/nm-dns-systemd-resolved.c
index fe2e78af75..6d37f4022a 100644
--- a/src/dns/nm-dns-systemd-resolved.c
+++ b/src/dns/nm-dns-systemd-resolved.c
@@ -179,7 +179,7 @@ static gboolean
update_add_ip_config(NMDnsSystemdResolved *self,
GVariantBuilder * dns,
GVariantBuilder * domains,
- NMDnsIPConfigData * data)
+ NMDnsConfigIPData * data)
{
int addr_family;
gsize addr_size;
@@ -256,7 +256,7 @@ prepare_one_interface(NMDnsSystemdResolved *self, InterfaceConfig *ic)
g_variant_builder_open(&domains, G_VARIANT_TYPE("a(sb)"));
c_list_for_each_entry (elem, &ic->configs_lst_head, lst) {
- NMDnsIPConfigData *data = elem->data;
+ NMDnsConfigIPData *data = elem->data;
NMIPConfig * ip_config = data->ip_config;
has_config |= update_add_ip_config(self, &dns, &domains, data);
@@ -423,7 +423,7 @@ update(NMDnsPlugin * plugin,
guint interfaces_len;
int ifindex;
gpointer pointer;
- NMDnsIPConfigData *ip_data;
+ NMDnsConfigIPData *ip_data;
GHashTableIter iter;
guint i;
diff --git a/src/dnsmasq/nm-dnsmasq-manager.c b/src/dnsmasq/nm-dnsmasq-manager.c
index 2dd4afcbe0..cdc3cd8589 100644
--- a/src/dnsmasq/nm-dnsmasq-manager.c
+++ b/src/dnsmasq/nm-dnsmasq-manager.c
@@ -313,7 +313,7 @@ nm_dnsmasq_manager_new(const char *iface)
NMDnsMasqManager * manager;
NMDnsMasqManagerPrivate *priv;
- manager = (NMDnsMasqManager *) g_object_new(NM_TYPE_DNSMASQ_MANAGER, NULL);
+ manager = g_object_new(NM_TYPE_DNSMASQ_MANAGER, NULL);
priv = NM_DNSMASQ_MANAGER_GET_PRIVATE(manager);
priv->iface = g_strdup(iface);
diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c
index 1c1b43ebb6..eedcf17878 100644
--- a/src/initrd/nmi-cmdline-reader.c
+++ b/src/initrd/nmi-cmdline-reader.c
@@ -701,8 +701,6 @@ reader_parse_master(Reader *reader, char *argument, const char *type_name, const
char * slaves;
const char * slave;
char * opts;
- char * opt;
- const char * opt_name;
const char * mtu = NULL;
master = get_word(&argument, ':');
@@ -724,8 +722,21 @@ reader_parse_master(Reader *reader, char *argument, const char *type_name, const
opts = get_word(&argument, ':');
while (opts && *opts) {
+ gs_free_error GError *error = NULL;
+ char * opt;
+ const char * opt_name;
+
opt = get_word(&opts, ',');
opt_name = get_word(&opt, '=');
+
+ if (!_nm_setting_bond_validate_option(opt_name, opt, &error)) {
+ _LOGW(LOGD_CORE,
+ "Ignoring invalid bond option: %s%s%s = %s%s%s: %s",
+ NM_PRINT_FMT_QUOTE_STRING(opt_name),
+ NM_PRINT_FMT_QUOTE_STRING(opt),
+ error->message);
+ continue;
+ }
nm_setting_bond_add_option(s_bond, opt_name, opt);
}
diff --git a/src/meson.build b/src/meson.build
index 667a6a2ce2..b3eddadcdd 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -45,6 +45,7 @@ sources = files(
'nm-dbus-utils.c',
'nm-netns.c',
'nm-l3-config-data.c',
+ 'nm-l3-ipv4ll.c',
'nm-l3cfg.c',
'nm-ip-config.c',
'nm-ip4-config.c',
diff --git a/src/nm-act-request.c b/src/nm-act-request.c
index 67936ca08e..aa70ac7750 100644
--- a/src/nm-act-request.c
+++ b/src/nm-act-request.c
@@ -22,14 +22,8 @@
#include "nm-libnm-core-intern/nm-auth-subject.h"
typedef struct {
- char *table;
- char *rule;
-} ShareRule;
-
-typedef struct {
- CList call_ids_lst_head;
- gboolean shared;
- GSList * share_rules;
+ CList call_ids_lst_head;
+ NMUtilsShareRules *share_rules;
} NMActRequestPrivate;
struct _NMActRequest {
@@ -254,109 +248,32 @@ nm_act_request_clear_secrets(NMActRequest *self)
/*****************************************************************************/
-static void
-clear_share_rules(NMActRequest *req)
-{
- NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE(req);
- GSList * iter;
-
- for (iter = priv->share_rules; iter; iter = g_slist_next(iter)) {
- ShareRule *rule = (ShareRule *) iter->data;
-
- g_free(rule->table);
- g_free(rule->rule);
- g_free(rule);
- }
-
- g_slist_free(priv->share_rules);
- priv->share_rules = NULL;
-}
-
-void
-nm_act_request_set_shared(NMActRequest *req, gboolean shared)
-{
- NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE(req);
- GSList * list, *iter;
-
- g_return_if_fail(NM_IS_ACT_REQUEST(req));
-
- NM_ACT_REQUEST_GET_PRIVATE(req)->shared = shared;
-
- /* Tear the rules down in reverse order when sharing is stopped */
- list = g_slist_copy(priv->share_rules);
- if (!shared)
- list = g_slist_reverse(list);
-
- /* Send the rules to iptables */
- for (iter = list; iter; iter = g_slist_next(iter)) {
- ShareRule * rule = (ShareRule *) iter->data;
- char * envp[1] = {NULL};
- gs_strfreev char **argv = NULL;
- gs_free char * cmd = NULL;
-
- cmd = g_strdup_printf("%s --table %s %s %s",
- IPTABLES_PATH,
- rule->table,
- shared ? "--insert" : "--delete",
- rule->rule);
- if (!cmd)
- continue;
-
- argv = g_strsplit(cmd, " ", 0);
- if (argv && argv[0]) {
- int status;
- GError *error = NULL;
-
- nm_log_info(LOGD_SHARING, "Executing: %s", cmd);
- if (!g_spawn_sync("/",
- argv,
- envp,
- G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- &status,
- &error)) {
- nm_log_warn(LOGD_SHARING, "Error executing command: %s", error->message);
- g_clear_error(&error);
- } else if (WEXITSTATUS(status)) {
- nm_log_warn(LOGD_SHARING,
- "** Command returned exit status %d.",
- WEXITSTATUS(status));
- }
- }
- }
-
- g_slist_free(list);
-
- /* Clear the share rule list when sharing is stopped */
- if (!shared)
- clear_share_rules(req);
-}
-
-gboolean
+NMUtilsShareRules *
nm_act_request_get_shared(NMActRequest *req)
{
g_return_val_if_fail(NM_IS_ACT_REQUEST(req), FALSE);
- return NM_ACT_REQUEST_GET_PRIVATE(req)->shared;
+ return NM_ACT_REQUEST_GET_PRIVATE(req)->share_rules;
}
void
-nm_act_request_add_share_rule(NMActRequest *req, const char *table, const char *table_rule)
+nm_act_request_set_shared(NMActRequest *req, NMUtilsShareRules *rules)
{
NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE(req);
- ShareRule * rule;
g_return_if_fail(NM_IS_ACT_REQUEST(req));
- g_return_if_fail(table != NULL);
- g_return_if_fail(table_rule != NULL);
- rule = g_malloc0(sizeof(ShareRule));
- rule->table = g_strdup(table);
- rule->rule = g_strdup(table_rule);
- priv->share_rules = g_slist_prepend(priv->share_rules, rule);
+ if (priv->share_rules == rules)
+ return;
+
+ if (priv->share_rules) {
+ nm_utils_share_rules_apply(priv->share_rules, FALSE);
+ priv->share_rules = NULL;
+ }
+ if (rules) {
+ priv->share_rules = rules;
+ nm_utils_share_rules_apply(priv->share_rules, TRUE);
+ }
}
/*****************************************************************************/
@@ -558,24 +475,24 @@ nm_act_request_new(NMSettingsConnection * settings_connection,
g_return_val_if_fail(NM_IS_DEVICE(device), NULL);
g_return_val_if_fail(NM_IS_AUTH_SUBJECT(subject), NULL);
- return (NMActRequest *) g_object_new(NM_TYPE_ACT_REQUEST,
- NM_ACTIVE_CONNECTION_INT_APPLIED_CONNECTION,
- applied_connection,
- NM_ACTIVE_CONNECTION_INT_SETTINGS_CONNECTION,
- settings_connection,
- NM_ACTIVE_CONNECTION_INT_DEVICE,
- device,
- NM_ACTIVE_CONNECTION_SPECIFIC_OBJECT,
- specific_object,
- NM_ACTIVE_CONNECTION_INT_SUBJECT,
- subject,
- NM_ACTIVE_CONNECTION_INT_ACTIVATION_TYPE,
- (int) activation_type,
- NM_ACTIVE_CONNECTION_INT_ACTIVATION_REASON,
- (int) activation_reason,
- NM_ACTIVE_CONNECTION_STATE_FLAGS,
- (guint) initial_state_flags,
- NULL);
+ return g_object_new(NM_TYPE_ACT_REQUEST,
+ NM_ACTIVE_CONNECTION_INT_APPLIED_CONNECTION,
+ applied_connection,
+ NM_ACTIVE_CONNECTION_INT_SETTINGS_CONNECTION,
+ settings_connection,
+ NM_ACTIVE_CONNECTION_INT_DEVICE,
+ device,
+ NM_ACTIVE_CONNECTION_SPECIFIC_OBJECT,
+ specific_object,
+ NM_ACTIVE_CONNECTION_INT_SUBJECT,
+ subject,
+ NM_ACTIVE_CONNECTION_INT_ACTIVATION_TYPE,
+ (int) activation_type,
+ NM_ACTIVE_CONNECTION_INT_ACTIVATION_REASON,
+ (int) activation_reason,
+ NM_ACTIVE_CONNECTION_STATE_FLAGS,
+ (guint) initial_state_flags,
+ NULL);
}
static void
@@ -589,10 +506,9 @@ dispose(GObject *object)
c_list_for_each_entry_safe (call_id, call_id_safe, &priv->call_ids_lst_head, call_ids_lst)
_do_cancel_secrets(self, call_id, TRUE);
- /* Clear any share rules */
if (priv->share_rules) {
- nm_act_request_set_shared(NM_ACT_REQUEST(object), FALSE);
- clear_share_rules(NM_ACT_REQUEST(object));
+ nm_utils_share_rules_apply(priv->share_rules, FALSE);
+ nm_clear_pointer(&priv->share_rules, nm_utils_share_rules_free);
}
G_OBJECT_CLASS(nm_act_request_parent_class)->dispose(object);
diff --git a/src/nm-act-request.h b/src/nm-act-request.h
index 65c8abf51b..e962ee7225 100644
--- a/src/nm-act-request.h
+++ b/src/nm-act-request.h
@@ -36,11 +36,15 @@ NMSettingsConnection *nm_act_request_get_settings_connection(NMActRequest *req);
NMConnection *nm_act_request_get_applied_connection(NMActRequest *req);
-gboolean nm_act_request_get_shared(NMActRequest *req);
+/*****************************************************************************/
-void nm_act_request_set_shared(NMActRequest *req, gboolean shared);
+struct _NMUtilsShareRules;
-void nm_act_request_add_share_rule(NMActRequest *req, const char *table, const char *rule);
+struct _NMUtilsShareRules *nm_act_request_get_shared(NMActRequest *req);
+
+void nm_act_request_set_shared(NMActRequest *req, struct _NMUtilsShareRules *rules);
+
+/*****************************************************************************/
/* Secrets handling */
diff --git a/src/nm-config-data.c b/src/nm-config-data.c
index 4320e26bcf..eb891c512d 100644
--- a/src/nm-config-data.c
+++ b/src/nm-config-data.c
@@ -1345,8 +1345,8 @@ global_dns_equal(NMGlobalDnsConfig *old, NMGlobalDnsConfig *new)
if (!old || !new)
return FALSE;
- if (!_nm_utils_strv_equal(old->options, new->options)
- || !_nm_utils_strv_equal(old->searches, new->searches))
+ if (!nm_utils_strv_equal(old->options, new->options)
+ || !nm_utils_strv_equal(old->searches, new->searches))
return FALSE;
if ((!old->domains || !new->domains) && old->domains != new->domains)
@@ -1364,8 +1364,8 @@ global_dns_equal(NMGlobalDnsConfig *old, NMGlobalDnsConfig *new)
domain_old = value_old;
domain_new = value_new;
- if (!_nm_utils_strv_equal(domain_old->options, domain_new->options)
- || !_nm_utils_strv_equal(domain_old->servers, domain_new->servers))
+ if (!nm_utils_strv_equal(domain_old->options, domain_new->options)
+ || !nm_utils_strv_equal(domain_old->servers, domain_new->servers))
return FALSE;
}
diff --git a/src/nm-config.c b/src/nm-config.c
index 8f46661dd1..da37945c1e 100644
--- a/src/nm-config.c
+++ b/src/nm-config.c
@@ -885,6 +885,7 @@ static const ConfigGroup config_groups[] = {
NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_BACKEND,
NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_SCAN_RAND_MAC_ADDRESS,
NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_SCAN_GENERATE_MAC_ADDRESS_MASK,
+ NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_IWD_AUTOCONNECT,
NM_CONFIG_KEYFILE_KEY_MATCH_DEVICE,
NM_CONFIG_KEYFILE_KEY_STOP_MATCH, ),
},
diff --git a/src/nm-config.h b/src/nm-config.h
index 9f866f2918..f4f1bf5d9a 100644
--- a/src/nm-config.h
+++ b/src/nm-config.h
@@ -88,6 +88,7 @@
#define NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_SCAN_GENERATE_MAC_ADDRESS_MASK \
"wifi.scan-generate-mac-address-mask"
#define NM_CONFIG_KEYFILE_KEY_DEVICE_CARRIER_WAIT_TIMEOUT "carrier-wait-timeout"
+#define NM_CONFIG_KEYFILE_KEY_DEVICE_WIFI_IWD_AUTOCONNECT "wifi.iwd.autoconnect"
#define NM_CONFIG_KEYFILE_KEY_MATCH_DEVICE "match-device"
#define NM_CONFIG_KEYFILE_KEY_STOP_MATCH "stop-match"
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
index 7adc011e30..81879be876 100644
--- a/src/nm-core-utils.c
+++ b/src/nm-core-utils.c
@@ -187,51 +187,46 @@ nm_utils_exp10(gint16 ex)
/*****************************************************************************/
-/*
- * nm_ethernet_address_is_valid:
- * @addr: pointer to a binary or ASCII Ethernet address
- * @len: length of @addr, or -1 if @addr is ASCII
- *
- * Compares an Ethernet address against known invalid addresses.
-
- * Returns: %TRUE if @addr is a valid Ethernet address, %FALSE if it is not.
- */
gboolean
-nm_ethernet_address_is_valid(gconstpointer addr, gssize len)
+nm_ether_addr_is_valid(const NMEtherAddr *addr)
{
- guint8 invalid_addr[4][ETH_ALEN] = {
+ static const guint8 invalid_addr[][ETH_ALEN] = {
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x44, 0x44, 0x44, 0x44, 0x44, 0x44},
{0x00, 0x30, 0xb4, 0x00, 0x00, 0x00}, /* prism54 dummy MAC */
};
- guint8 addr_bin[ETH_ALEN];
- guint i;
+ int i;
- if (!addr) {
- g_return_val_if_fail(len == -1 || len == ETH_ALEN, FALSE);
+ if (!addr)
return FALSE;
- }
-
- if (len == -1) {
- if (!nm_utils_hwaddr_aton(addr, addr_bin, ETH_ALEN))
- return FALSE;
- addr = addr_bin;
- } else if (len != ETH_ALEN)
- g_return_val_if_reached(FALSE);
/* Check for multicast address */
- if ((((guint8 *) addr)[0]) & 0x01)
+ if (addr->ether_addr_octet[0] & 0x01u)
return FALSE;
- for (i = 0; i < G_N_ELEMENTS(invalid_addr); i++) {
- if (nm_utils_hwaddr_matches(addr, ETH_ALEN, invalid_addr[i], ETH_ALEN))
+ for (i = 0; i < (int) G_N_ELEMENTS(invalid_addr); i++) {
+ if (memcmp(addr, invalid_addr[i], ETH_ALEN) == 0)
return FALSE;
}
return TRUE;
}
+gboolean
+nm_ether_addr_is_valid_str(const char *str)
+{
+ NMEtherAddr addr_bin;
+
+ if (!str)
+ return FALSE;
+
+ if (!nm_utils_hwaddr_aton(str, &addr_bin, ETH_ALEN))
+ return FALSE;
+
+ return nm_ether_addr_is_valid(&addr_bin);
+}
+
/*****************************************************************************/
void
@@ -4386,7 +4381,7 @@ nm_utils_dnsmasq_status_to_string(int status, char *dest, gsize size)
}
/**
- * nm_utils_get_reverse_dns_domains_ip4:
+ * nm_utils_get_reverse_dns_domains_ip_4:
* @addr: IP address in network order
* @plen: prefix length
* @domains: array for results
@@ -4395,7 +4390,7 @@ nm_utils_dnsmasq_status_to_string(int status, char *dest, gsize size)
* append them to @domains.
*/
void
-nm_utils_get_reverse_dns_domains_ip4(guint32 addr, guint8 plen, GPtrArray *domains)
+nm_utils_get_reverse_dns_domains_ip_4(guint32 addr, guint8 plen, GPtrArray *domains)
{
guint32 ip, ip2, mask;
guchar *p;
@@ -4434,7 +4429,7 @@ nm_utils_get_reverse_dns_domains_ip4(guint32 addr, guint8 plen, GPtrArray *domai
}
/**
- * nm_utils_get_reverse_dns_domains_ip6:
+ * nm_utils_get_reverse_dns_domains_ip_6:
* @addr: IPv6 address
* @plen: prefix length
* @domains: array for results
@@ -4443,7 +4438,7 @@ nm_utils_get_reverse_dns_domains_ip4(guint32 addr, guint8 plen, GPtrArray *domai
* append them to @domains.
*/
void
-nm_utils_get_reverse_dns_domains_ip6(const struct in6_addr *ip, guint8 plen, GPtrArray *domains)
+nm_utils_get_reverse_dns_domains_ip_6(const struct in6_addr *ip, guint8 plen, GPtrArray *domains)
{
struct in6_addr addr;
guint nibbles, bits, entries;
diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h
index 237574c550..5c8bac9c80 100644
--- a/src/nm-core-utils.h
+++ b/src/nm-core-utils.h
@@ -95,7 +95,8 @@ void _nm_singleton_instance_register_destruction(GObject *instance);
/*****************************************************************************/
-gboolean nm_ethernet_address_is_valid(gconstpointer addr, gssize len);
+gboolean nm_ether_addr_is_valid(const NMEtherAddr *addr);
+gboolean nm_ether_addr_is_valid_str(const char *str);
gconstpointer
nm_utils_ipx_address_clear_host_address(int family, gpointer dst, gconstpointer src, guint8 plen);
@@ -209,7 +210,7 @@ nm_utils_ip6_route_metric_normalize(guint32 metric)
static inline guint32
nm_utils_ip_route_metric_normalize(int addr_family, guint32 metric)
{
- return addr_family == AF_INET6 ? nm_utils_ip6_route_metric_normalize(metric) : metric;
+ return NM_IS_IPv4(addr_family) ? metric : nm_utils_ip6_route_metric_normalize(metric);
}
static inline guint32
@@ -531,9 +532,21 @@ nm_utils_ip4_address_is_zeronet(in_addr_t network)
const char *nm_utils_dnsmasq_status_to_string(int status, char *dest, gsize size);
-void nm_utils_get_reverse_dns_domains_ip4(guint32 ip, guint8 plen, GPtrArray *domains);
+void nm_utils_get_reverse_dns_domains_ip_4(guint32 ip, guint8 plen, GPtrArray *domains);
void
-nm_utils_get_reverse_dns_domains_ip6(const struct in6_addr *ip, guint8 plen, GPtrArray *domains);
+nm_utils_get_reverse_dns_domains_ip_6(const struct in6_addr *ip, guint8 plen, GPtrArray *domains);
+
+static inline void
+nm_utils_get_reverse_dns_domains_ip(int addr_family,
+ gconstpointer addr,
+ guint8 plen,
+ GPtrArray * domains)
+{
+ if (NM_IS_IPv4(addr_family))
+ nm_utils_get_reverse_dns_domains_ip_4(*((const in_addr_t *) addr), plen, domains);
+ else
+ nm_utils_get_reverse_dns_domains_ip_6(addr, plen, domains);
+}
struct stat;
diff --git a/src/nm-dispatcher.c b/src/nm-dispatcher.c
index feab265dbb..3b0763d11e 100644
--- a/src/nm-dispatcher.c
+++ b/src/nm-dispatcher.c
@@ -167,140 +167,131 @@ dump_proxy_to_props(NMProxyConfig *proxy, GVariantBuilder *builder)
}
static void
-dump_ip4_to_props(NMIP4Config *ip4, GVariantBuilder *builder)
+dump_ip_to_props(NMIPConfig *ip, GVariantBuilder *builder)
{
- GVariantBuilder int_builder;
- NMDedupMultiIter ipconf_iter;
- gboolean first;
- guint n, i;
- const NMPlatformIP4Address *addr;
- const NMPlatformIP4Route * route;
- guint32 array[4];
-
- /* Addresses */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aau"));
- first = TRUE;
- nm_ip_config_iter_ip4_address_for_each (&ipconf_iter, ip4, &addr) {
- const NMPObject *default_route;
-
- array[0] = addr->address;
- array[1] = addr->plen;
- array[2] = (first && (default_route = nm_ip4_config_best_default_route_get(ip4)))
- ? NMP_OBJECT_CAST_IP4_ROUTE(default_route)->gateway
- : (guint32) 0;
- g_variant_builder_add(
- &int_builder,
- "@au",
- g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, array, 3, sizeof(guint32)));
- first = FALSE;
+ const int addr_family = nm_ip_config_get_addr_family(ip);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ const NMPObject *obj;
+ GVariantBuilder int_builder;
+ NMDedupMultiIter ipconf_iter;
+ GVariant * var1;
+ GVariant * var2;
+ guint n;
+ guint i;
+ const NMPObject *default_route;
+
+ if (IS_IPv4)
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aau"));
+ else
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("a(ayuay)"));
+ default_route = nm_ip_config_best_default_route_get(ip);
+ if (IS_IPv4)
+ nm_ip_config_iter_ip4_address_init(&ipconf_iter, NM_IP4_CONFIG(ip));
+ else
+ nm_ip_config_iter_ip6_address_init(&ipconf_iter, NM_IP6_CONFIG(ip));
+ while (nm_platform_dedup_multi_iter_next_obj(&ipconf_iter,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4))) {
+ const NMPlatformIPXAddress *addr = NMP_OBJECT_CAST_IPX_ADDRESS(obj);
+
+ if (IS_IPv4) {
+ guint32 array[3];
+ in_addr_t gw;
+
+ gw = 0u;
+ if (default_route) {
+ gw = NMP_OBJECT_CAST_IP4_ROUTE(default_route)->gateway;
+ default_route = NULL;
+ }
+ array[0] = addr->a4.address;
+ array[1] = addr->a4.plen;
+ array[2] = gw;
+ g_variant_builder_add(
+ &int_builder,
+ "@au",
+ g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, array, 3, sizeof(guint32)));
+ } else {
+ const struct in6_addr *gw = &in6addr_any;
+
+ if (default_route) {
+ gw = &NMP_OBJECT_CAST_IP6_ROUTE(default_route)->gateway;
+ default_route = NULL;
+ }
+ var1 = nm_g_variant_new_ay_in6addr(&addr->a6.address);
+ var2 = nm_g_variant_new_ay_in6addr(gw);
+ g_variant_builder_add(&int_builder, "(@ayu@ay)", var1, addr->a6.plen, var2);
+ }
}
g_variant_builder_add(builder, "{sv}", "addresses", g_variant_builder_end(&int_builder));
- /* DNS servers */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("au"));
- n = nm_ip4_config_get_num_nameservers(ip4);
- for (i = 0; i < n; i++)
- g_variant_builder_add(&int_builder, "u", nm_ip4_config_get_nameserver(ip4, i));
+ if (IS_IPv4)
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("au"));
+ else
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aay"));
+ n = nm_ip_config_get_num_nameservers(ip);
+ for (i = 0; i < n; i++) {
+ if (IS_IPv4) {
+ g_variant_builder_add(&int_builder,
+ "u",
+ nm_ip4_config_get_nameserver(NM_IP4_CONFIG(ip), i));
+ } else {
+ var1 = nm_g_variant_new_ay_in6addr(nm_ip6_config_get_nameserver(NM_IP6_CONFIG(ip), i));
+ g_variant_builder_add(&int_builder, "@ay", var1);
+ }
+ }
g_variant_builder_add(builder, "{sv}", "nameservers", g_variant_builder_end(&int_builder));
- /* Search domains */
g_variant_builder_init(&int_builder, G_VARIANT_TYPE("as"));
- n = nm_ip4_config_get_num_domains(ip4);
+ n = nm_ip_config_get_num_domains(ip);
for (i = 0; i < n; i++)
- g_variant_builder_add(&int_builder, "s", nm_ip4_config_get_domain(ip4, i));
+ g_variant_builder_add(&int_builder, "s", nm_ip_config_get_domain(ip, i));
g_variant_builder_add(builder, "{sv}", "domains", g_variant_builder_end(&int_builder));
- /* WINS servers */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("au"));
- n = nm_ip4_config_get_num_wins(ip4);
- for (i = 0; i < n; i++)
- g_variant_builder_add(&int_builder, "u", nm_ip4_config_get_wins(ip4, i));
- g_variant_builder_add(builder, "{sv}", "wins-servers", g_variant_builder_end(&int_builder));
-
- /* Static routes */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aau"));
- nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, ip4, &route) {
- if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(route))
- continue;
- array[0] = route->network;
- array[1] = route->plen;
- array[2] = route->gateway;
- array[3] = route->metric;
- g_variant_builder_add(
- &int_builder,
- "@au",
- g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, array, 4, sizeof(guint32)));
+ if (IS_IPv4) {
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("au"));
+ n = nm_ip4_config_get_num_wins(NM_IP4_CONFIG(ip));
+ for (i = 0; i < n; i++)
+ g_variant_builder_add(&int_builder, "u", nm_ip4_config_get_wins(NM_IP4_CONFIG(ip), i));
+ g_variant_builder_add(builder, "{sv}", "wins-servers", g_variant_builder_end(&int_builder));
}
- g_variant_builder_add(builder, "{sv}", "routes", g_variant_builder_end(&int_builder));
-}
-static void
-dump_ip6_to_props(NMIP6Config *ip6, GVariantBuilder *builder)
-{
- GVariantBuilder int_builder;
- NMDedupMultiIter ipconf_iter;
- guint n, i;
- gboolean first;
- const NMPlatformIP6Address *addr;
- const NMPlatformIP6Route * route;
- GVariant * ip, *gw;
-
- /* Addresses */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("a(ayuay)"));
-
- first = TRUE;
- nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, ip6, &addr) {
- const NMPObject *default_route;
-
- ip = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE,
- &addr->address,
- sizeof(struct in6_addr),
- 1);
- gw = g_variant_new_fixed_array(
- G_VARIANT_TYPE_BYTE,
- (first && (default_route = nm_ip6_config_best_default_route_get(ip6)))
- ? &NMP_OBJECT_CAST_IP6_ROUTE(default_route)->gateway
- : &in6addr_any,
- sizeof(struct in6_addr),
- 1);
- g_variant_builder_add(&int_builder, "(@ayu@ay)", ip, addr->plen, gw);
- first = FALSE;
- }
- g_variant_builder_add(builder, "{sv}", "addresses", g_variant_builder_end(&int_builder));
-
- /* DNS servers */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aay"));
- n = nm_ip6_config_get_num_nameservers(ip6);
- for (i = 0; i < n; i++) {
- ip = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE,
- nm_ip6_config_get_nameserver(ip6, i),
- sizeof(struct in6_addr),
- 1);
- g_variant_builder_add(&int_builder, "@ay", ip);
- }
- g_variant_builder_add(builder, "{sv}", "nameservers", g_variant_builder_end(&int_builder));
-
- /* Search domains */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("as"));
- n = nm_ip6_config_get_num_domains(ip6);
- for (i = 0; i < n; i++)
- g_variant_builder_add(&int_builder, "s", nm_ip6_config_get_domain(ip6, i));
- g_variant_builder_add(builder, "{sv}", "domains", g_variant_builder_end(&int_builder));
+ if (IS_IPv4)
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("aau"));
+ else
+ g_variant_builder_init(&int_builder, G_VARIANT_TYPE("a(ayuayu)"));
+ if (IS_IPv4)
+ nm_ip_config_iter_ip4_route_init(&ipconf_iter, NM_IP4_CONFIG(ip));
+ else
+ nm_ip_config_iter_ip6_route_init(&ipconf_iter, NM_IP6_CONFIG(ip));
+ while (nm_platform_dedup_multi_iter_next_obj(&ipconf_iter,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))) {
+ const NMPlatformIPXRoute *route = NMP_OBJECT_CAST_IPX_ROUTE(obj);
- /* Static routes */
- g_variant_builder_init(&int_builder, G_VARIANT_TYPE("a(ayuayu)"));
- nm_ip_config_iter_ip6_route_for_each (&ipconf_iter, ip6, &route) {
if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(route))
continue;
- ip = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE,
- &route->network,
- sizeof(struct in6_addr),
- 1);
- gw = g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE,
- &route->gateway,
- sizeof(struct in6_addr),
- 1);
- g_variant_builder_add(&int_builder, "(@ayu@ayu)", ip, route->plen, gw, route->metric);
+
+ if (IS_IPv4) {
+ guint32 array[4];
+
+ array[0] = route->r4.network;
+ array[1] = route->r4.plen;
+ array[2] = route->r4.gateway;
+ array[3] = route->r4.metric;
+ g_variant_builder_add(
+ &int_builder,
+ "@au",
+ g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, array, 4, sizeof(guint32)));
+ } else {
+ var1 = nm_g_variant_new_ay_in6addr(&route->r6.network);
+ var2 = nm_g_variant_new_ay_in6addr(&route->r6.gateway);
+ g_variant_builder_add(&int_builder,
+ "(@ayu@ayu)",
+ var1,
+ route->r6.plen,
+ var2,
+ route->r6.metric);
+ }
}
g_variant_builder_add(builder, "{sv}", "routes", g_variant_builder_end(&int_builder));
}
@@ -350,11 +341,11 @@ fill_device_props(NMDevice * device,
ip4_config = nm_device_get_ip4_config(device);
if (ip4_config)
- dump_ip4_to_props(ip4_config, ip4_builder);
+ dump_ip_to_props(NM_IP_CONFIG(ip4_config), ip4_builder);
ip6_config = nm_device_get_ip6_config(device);
if (ip6_config)
- dump_ip6_to_props(ip6_config, ip6_builder);
+ dump_ip_to_props(NM_IP_CONFIG(ip6_config), ip6_builder);
dhcp_config = nm_device_get_dhcp_config(device, AF_INET);
if (dhcp_config)
@@ -376,9 +367,9 @@ fill_vpn_props(NMProxyConfig * proxy_config,
if (proxy_config)
dump_proxy_to_props(proxy_config, proxy_builder);
if (ip4_config)
- dump_ip4_to_props(ip4_config, ip4_builder);
+ dump_ip_to_props(NM_IP_CONFIG(ip4_config), ip4_builder);
if (ip6_config)
- dump_ip6_to_props(ip6_config, ip6_builder);
+ dump_ip_to_props(NM_IP_CONFIG(ip6_config), ip6_builder);
}
static const char *
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 9d2b459d32..27847af77f 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -3120,12 +3120,12 @@ NMIP4Config *
nm_ip4_config_new(NMDedupMultiIndex *multi_idx, int ifindex)
{
g_return_val_if_fail(ifindex >= -1, NULL);
- return (NMIP4Config *) g_object_new(NM_TYPE_IP4_CONFIG,
- NM_IP4_CONFIG_MULTI_IDX,
- multi_idx,
- NM_IP4_CONFIG_IFINDEX,
- ifindex,
- NULL);
+ return g_object_new(NM_TYPE_IP4_CONFIG,
+ NM_IP4_CONFIG_MULTI_IDX,
+ multi_idx,
+ NM_IP4_CONFIG_IFINDEX,
+ ifindex,
+ NULL);
}
static void
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index ccfca74c1e..c8bad3a8d2 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -319,14 +319,21 @@ NM_IS_IP_CONFIG_ADDR_FAMILY(gconstpointer config, int addr_family)
NM_CONSTCAST_FULL(NMIPConfig, (config), _configx, NMIP4Config, NMIP6Config); \
})
+static inline gboolean
+nm_ip_config_is_ipv4(const NMIPConfig *config)
+{
+ if (NM_IP_CONFIG_GET_CLASS(config)->is_ipv4) {
+ nm_assert(NM_IS_IP4_CONFIG(config));
+ return TRUE;
+ }
+ nm_assert(NM_IS_IP6_CONFIG(config));
+ return FALSE;
+}
+
static inline int
nm_ip_config_get_addr_family(const NMIPConfig *config)
{
- if (NM_IS_IP4_CONFIG(config))
- return AF_INET;
- if (NM_IS_IP6_CONFIG(config))
- return AF_INET6;
- g_return_val_if_reached(AF_UNSPEC);
+ return nm_ip_config_is_ipv4(config) ? AF_INET : AF_INET6;
}
#define _NM_IP_CONFIG_DISPATCH(config, v4_func, v6_func, ...) \
@@ -334,10 +341,9 @@ nm_ip_config_get_addr_family(const NMIPConfig *config)
{ \
gconstpointer _config = (config); \
\
- if (NM_IS_IP4_CONFIG(_config)) { \
+ if (nm_ip_config_is_ipv4(_config)) { \
return v4_func((NMIP4Config *) _config, ##__VA_ARGS__); \
} else { \
- nm_assert(NM_IS_IP6_CONFIG(_config)); \
return v6_func((NMIP6Config *) _config, ##__VA_ARGS__); \
} \
} \
@@ -348,10 +354,9 @@ nm_ip_config_get_addr_family(const NMIPConfig *config)
{ \
gconstpointer _config = (config); \
\
- if (NM_IS_IP4_CONFIG(_config)) { \
+ if (nm_ip_config_is_ipv4(_config)) { \
v4_func((NMIP4Config *) _config, ##__VA_ARGS__); \
} else { \
- nm_assert(NM_IS_IP6_CONFIG(_config)); \
v6_func((NMIP6Config *) _config, ##__VA_ARGS__); \
} \
} \
@@ -369,6 +374,38 @@ nm_ip_config_hash(const NMIPConfig *self, GChecksum *sum, gboolean dns_only)
_NM_IP_CONFIG_DISPATCH_VOID(self, nm_ip4_config_hash, nm_ip6_config_hash, sum, dns_only);
}
+static inline gconstpointer
+nm_ip_config_get_first_address(NMIPConfig *self)
+{
+ _NM_IP_CONFIG_DISPATCH(self, nm_ip4_config_get_first_address, nm_ip6_config_get_first_address);
+}
+
+static inline void
+nm_ip_config_iter_ip_address_init(NMDedupMultiIter *iter, const NMIPConfig *self)
+{
+ if (nm_ip_config_is_ipv4(self))
+ nm_ip_config_iter_ip4_address_init(iter, (const NMIP4Config *) self);
+ else
+ nm_ip_config_iter_ip6_address_init(iter, (const NMIP6Config *) self);
+}
+
+#define nm_ip_config_iter_ip_address_for_each(iter, self, address) \
+ for (nm_ip_config_iter_ip_address_init((iter), (self)); \
+ nm_platform_dedup_multi_iter_next_ip_address((iter), (address));)
+
+static inline void
+nm_ip_config_iter_ip_route_init(NMDedupMultiIter *iter, const NMIPConfig *self)
+{
+ if (nm_ip_config_is_ipv4(self))
+ nm_ip_config_iter_ip4_route_init(iter, (const NMIP4Config *) self);
+ else
+ nm_ip_config_iter_ip6_route_init(iter, (const NMIP6Config *) self);
+}
+
+#define nm_ip_config_iter_ip_route_for_each(iter, self, route) \
+ for (nm_ip_config_iter_ip_route_init((iter), (self)); \
+ nm_platform_dedup_multi_iter_next_ip_route((iter), (route));)
+
static inline void
nm_ip_config_add_address(NMIPConfig *self, const NMPlatformIPAddress *address)
{
@@ -543,11 +580,9 @@ nm_ip_config_set_never_default(NMIPConfig *self, gboolean never_default)
gpointer _dst = (dst); \
gconstpointer _src = (src); \
\
- if (NM_IS_IP4_CONFIG(_dst)) { \
- nm_assert(NM_IS_IP4_CONFIG(_src)); \
+ if (nm_ip_config_is_ipv4(_dst)) { \
_return v4_func((NMIP4Config *) _dst, (const NMIP4Config *) _src, ##__VA_ARGS__); \
} else { \
- nm_assert(NM_IS_IP6_CONFIG(_src)); \
_return v6_func((NMIP6Config *) _dst, (const NMIP6Config *) _src, ##__VA_ARGS__); \
} \
} \
@@ -610,7 +645,8 @@ nm_ip_config_intersect_alloc(const NMIPConfig *a,
gboolean intersect_routes,
guint32 default_route_metric_penalty)
{
- if (NM_IS_IP4_CONFIG(a)) {
+ if (nm_ip_config_is_ipv4(a)) {
+ nm_assert(NM_IS_IP4_CONFIG(a));
nm_assert(NM_IS_IP4_CONFIG(b));
return (NMIPConfig *) nm_ip4_config_intersect_alloc((const NMIP4Config *) a,
(const NMIP4Config *) b,
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 407aa1d60f..54488e37d9 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -2554,12 +2554,12 @@ NMIP6Config *
nm_ip6_config_new(NMDedupMultiIndex *multi_idx, int ifindex)
{
g_return_val_if_fail(ifindex >= -1, NULL);
- return (NMIP6Config *) g_object_new(NM_TYPE_IP6_CONFIG,
- NM_IP6_CONFIG_MULTI_IDX,
- multi_idx,
- NM_IP6_CONFIG_IFINDEX,
- ifindex,
- NULL);
+ return g_object_new(NM_TYPE_IP6_CONFIG,
+ NM_IP6_CONFIG_MULTI_IDX,
+ multi_idx,
+ NM_IP6_CONFIG_IFINDEX,
+ ifindex,
+ NULL);
}
NMIP6Config *
diff --git a/src/nm-l3-config-data.c b/src/nm-l3-config-data.c
index 3cc5d67041..a5c8d52337 100644
--- a/src/nm-l3-config-data.c
+++ b/src/nm-l3-config-data.c
@@ -385,8 +385,10 @@ nm_l3_config_data_log(const NML3ConfigData *self,
const NMPObject *obj;
i = 0;
- nm_l3_config_data_iter_obj_for_each(&iter, self, &obj, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ self,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)) {
_L("address%c[%u]: %s",
nm_utils_addr_family_to_char(addr_family),
i,
@@ -407,8 +409,7 @@ nm_l3_config_data_log(const NML3ConfigData *self,
}
i = 0;
- nm_l3_config_data_iter_obj_for_each(&iter, self, &obj, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter, self, &obj, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
_L("route%c[%u]: %s%s",
nm_utils_addr_family_to_char(addr_family),
i,
@@ -586,9 +587,7 @@ _route_valid_6(const NMPlatformIP6Route *r)
static gboolean
_route_valid(int addr_family, gconstpointer r)
{
- nm_assert_addr_family(addr_family);
-
- return addr_family == AF_INET ? _route_valid_4(r) : _route_valid_6(r);
+ return NM_IS_IPv4(addr_family) ? _route_valid_4(r) : _route_valid_6(r);
}
static gboolean
@@ -914,8 +913,7 @@ nm_l3_config_data_has_routes_with_type_local(const NML3ConfigData *self, int add
}
val = FALSE;
- nm_l3_config_data_iter_obj_for_each(&iter, self, &obj, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter, self, &obj, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
if (NMP_OBJECT_CAST_IP_ROUTE(obj)->type_coerced
== nm_platform_route_type_coerce(RTN_LOCAL)) {
val = TRUE;
@@ -989,8 +987,7 @@ nm_l3_config_data_get_first_obj(const NML3ConfigData *self,
nm_assert(_NM_IS_L3_CONFIG_DATA(self, TRUE));
- nm_l3_config_data_iter_obj_for_each(&iter, self, &obj, obj_type)
- {
+ nm_l3_config_data_iter_obj_for_each (&iter, self, &obj, obj_type) {
if (!predicate || predicate(obj))
return obj;
}
@@ -1205,8 +1202,7 @@ nm_l3_config_data_add_address_full(NML3ConfigData * self,
nm_assert(!obj_new || NMP_OBJECT_GET_ADDR_FAMILY(obj_new) == addr_family);
changed = _l3_config_data_add_obj(self->multi_idx,
- addr_family == AF_INET ? &self->idx_addresses_4
- : &self->idx_addresses_6,
+ &self->idx_addresses_x[NM_IS_IPv4(addr_family)],
self->ifindex,
obj_new,
(const NMPlatformObject *) pl_new,
@@ -1253,7 +1249,7 @@ nm_l3_config_data_add_route_full(NML3ConfigData * self,
else
self->has_routes_with_type_local_6_set = FALSE;
if (_l3_config_data_add_obj(self->multi_idx,
- addr_family == AF_INET ? &self->idx_routes_4 : &self->idx_routes_6,
+ &self->idx_routes_x[NM_IS_IPv4(addr_family)],
self->ifindex,
obj_new,
(const NMPlatformObject *) pl_new,
@@ -1880,11 +1876,10 @@ _data_get_direct_route_for_host(const NML3ConfigData *self,
if (nm_ip_addr_is_null(addr_family, host))
return NULL;
- nm_l3_config_data_iter_obj_for_each(&ipconf_iter,
- self,
- &item_obj,
- NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&ipconf_iter,
+ self,
+ &item_obj,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
const NMPlatformIPXRoute *item = NMP_OBJECT_CAST_IPX_ROUTE(item_obj);
if (nm_ip_addr_is_null(addr_family,
@@ -1941,8 +1936,7 @@ nm_l3_config_data_get_blacklisted_ip4_routes(const NML3ConfigData *self, gboolea
* As we don't do that for IPv4 and manual IPv6 addresses. Add them here
* as dependent routes. */
- nm_l3_config_data_iter_obj_for_each(&iter, self, &my_addr_obj, NMP_OBJECT_TYPE_IP4_ADDRESS)
- {
+ nm_l3_config_data_iter_obj_for_each (&iter, self, &my_addr_obj, NMP_OBJECT_TYPE_IP4_ADDRESS) {
const NMPlatformIP4Address *const my_addr = NMP_OBJECT_CAST_IP4_ADDRESS(my_addr_obj);
in_addr_t network_4;
NMPlatformIPXRoute rx;
@@ -2033,11 +2027,10 @@ nm_l3_config_data_add_dependent_routes(NML3ConfigData *self,
nm_l3_config_data_add_route(self, addr_family, NULL, &rx.rx);
}
- nm_l3_config_data_iter_obj_for_each(&iter,
- self,
- &my_addr_obj,
- NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ self,
+ &my_addr_obj,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)) {
const NMPlatformIPXAddress *const my_addr = NMP_OBJECT_CAST_IPX_ADDRESS(my_addr_obj);
if (my_addr->ax.external)
@@ -2152,11 +2145,10 @@ nm_l3_config_data_add_dependent_routes(NML3ConfigData *self,
}
}
- nm_l3_config_data_iter_obj_for_each(&iter,
- self,
- &my_route_obj,
- NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ self,
+ &my_route_obj,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
const NMPlatformIPXRoute *my_route = NMP_OBJECT_CAST_IPX_ROUTE(my_route_obj);
NMPObject * new_route;
NMPlatformIPXRoute * new_r;
@@ -2547,22 +2539,38 @@ nm_l3_config_data_merge(NML3ConfigData * self,
const NML3ConfigDatFlags has_dns_priority_flag =
NM_L3_CONFIG_DAT_FLAGS_HAS_DNS_PRIORITY(IS_IPv4);
- nm_l3_config_data_iter_obj_for_each(&iter, src, &obj, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4))
- {
- if (hook_add_addr && !hook_add_addr(src, obj, hook_user_data))
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ src,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)) {
+ NMPlatformIPXAddress addr_stack;
+ const NMPlatformIPAddress *addr = NULL;
+ NMTernary ip4acd_not_ready = NM_TERNARY_DEFAULT;
+
+ if (hook_add_addr && !hook_add_addr(src, obj, &ip4acd_not_ready, hook_user_data))
continue;
+ if (IS_IPv4 && ip4acd_not_ready != NM_TERNARY_DEFAULT
+ && (!!ip4acd_not_ready) != NMP_OBJECT_CAST_IP4_ADDRESS(obj)->ip4acd_not_ready) {
+ addr_stack.a4 = *NMP_OBJECT_CAST_IP4_ADDRESS(obj);
+ addr_stack.a4.ip4acd_not_ready = (!!ip4acd_not_ready);
+ addr = &addr_stack.ax;
+ } else
+ nm_assert(IS_IPv4 || ip4acd_not_ready == NM_TERNARY_DEFAULT);
+
nm_l3_config_data_add_address_full(self,
addr_family,
- obj,
- NULL,
+ addr ? NULL : obj,
+ addr,
NM_L3_CONFIG_ADD_FLAGS_EXCLUSIVE,
NULL);
}
if (!NM_FLAGS_HAS(merge_flags, NM_L3_CONFIG_MERGE_FLAGS_NO_ROUTES)) {
- nm_l3_config_data_iter_obj_for_each(&iter, src, &obj, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ src,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
const NMPlatformIPRoute *r_src = NMP_OBJECT_CAST_IP_ROUTE(obj);
NMPlatformIPXRoute r;
@@ -2589,7 +2597,7 @@ nm_l3_config_data_merge(NML3ConfigData * self,
if (r_src->metric_any) {
_ensure_r();
r.rx.metric_any = FALSE;
- r.rx.metric_any = default_route_metric_x[IS_IPv4];
+ r.rx.metric = nm_add_clamped_u32(r.rx.metric, default_route_metric_x[IS_IPv4]);
}
if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(r_src)) {
@@ -2655,8 +2663,7 @@ nm_l3_config_data_merge(NML3ConfigData * self,
if (self->llmnr == NM_SETTING_CONNECTION_LLMNR_DEFAULT)
self->llmnr = src->llmnr;
- if (self->metered == NM_TERNARY_DEFAULT)
- self->metered = src->metered;
+ self->metered = NM_MAX((NMTernary) self->metered, (NMTernary) src->metered);
if (self->ip6_privacy == NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN)
self->ip6_privacy = src->ip6_privacy;
diff --git a/src/nm-l3-config-data.h b/src/nm-l3-config-data.h
index 81dae7dea4..da9fd93a96 100644
--- a/src/nm-l3-config-data.h
+++ b/src/nm-l3-config-data.h
@@ -141,6 +141,7 @@ NML3ConfigData *nm_l3_config_data_new_from_platform(NMDedupMultiIndex * mu
typedef gboolean (*NML3ConfigMergeHookAddObj)(const NML3ConfigData *l3cd,
const NMPObject * obj,
+ NMTernary * out_ip4acd_not_ready,
gpointer user_data);
void nm_l3_config_data_merge(NML3ConfigData * self,
@@ -222,21 +223,13 @@ const NMDedupMultiHeadEntry *nm_l3_config_data_lookup_objs(const NML3ConfigData
static inline const NMDedupMultiHeadEntry *
nm_l3_config_data_lookup_addresses(const NML3ConfigData *self, int addr_family)
{
- nm_assert_addr_family(addr_family);
-
- return nm_l3_config_data_lookup_objs(self,
- addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ADDRESS
- : NMP_OBJECT_TYPE_IP6_ADDRESS);
+ return nm_l3_config_data_lookup_objs(self, NMP_OBJECT_TYPE_IP_ADDRESS(NM_IS_IPv4(addr_family)));
}
static inline const NMDedupMultiHeadEntry *
nm_l3_config_data_lookup_routes(const NML3ConfigData *self, int addr_family)
{
- nm_assert_addr_family(addr_family);
-
- return nm_l3_config_data_lookup_objs(self,
- addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ROUTE
- : NMP_OBJECT_TYPE_IP6_ROUTE);
+ return nm_l3_config_data_lookup_objs(self, NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)));
}
#define nm_l3_config_data_iter_obj_for_each(iter, self, obj, type) \
diff --git a/src/nm-l3-ipv4ll.c b/src/nm-l3-ipv4ll.c
new file mode 100644
index 0000000000..fe76b96955
--- /dev/null
+++ b/src/nm-l3-ipv4ll.c
@@ -0,0 +1,1058 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+
+#include "nm-default.h"
+
+#include "nm-l3-ipv4ll.h"
+
+#include <net/if.h>
+
+#include "n-acd/src/n-acd.h"
+#include "nm-core-utils.h"
+
+#define ADDR_IPV4LL_PREFIX_LEN 16
+
+#define TIMED_OUT_TIME_FACTOR 5u
+
+/*****************************************************************************/
+
+typedef enum {
+ TIMED_OUT_STATE_IS_NOT_TIMED_OUT,
+ TIMED_OUT_STATE_IS_TIMED_OUT,
+ TIMED_OUT_STATE_HAVE_TIMER_RUNNING,
+} TimedOutState;
+
+struct _NML3IPv4LLRegistration {
+ NML3IPv4LL *self;
+ CList reg_lst;
+ guint timeout_msec;
+};
+
+G_STATIC_ASSERT(G_STRUCT_OFFSET(NML3IPv4LLRegistration, self) == 0);
+
+struct _NML3IPv4LL {
+ NML3Cfg * l3cfg;
+ int ref_count;
+ in_addr_t addr;
+ guint reg_timeout_msec;
+ CList reg_lst_head;
+ NML3CfgCommitTypeHandle *l3cfg_commit_handle;
+ GSource * state_change_on_idle_source;
+ GSource * timed_out_source;
+ const NML3ConfigData * l3cd;
+ const NMPObject * plobj;
+ struct {
+ nm_le64_t value;
+ nm_le64_t generation;
+ } seed;
+ gint64 timed_out_expiry_msec;
+ gulong l3cfg_signal_notify_id;
+ NML3IPv4LLState state;
+ NMEtherAddr seed_mac;
+ NMEtherAddr mac;
+ bool seed_set : 1;
+ bool mac_set : 1;
+ bool notify_on_idle : 1;
+ bool reg_changed : 1;
+ bool l3cd_timeout_msec_changed : 1;
+
+ /* not yet used. */
+ bool seed_reset_generation : 1;
+};
+
+G_STATIC_ASSERT(G_STRUCT_OFFSET(NML3IPv4LL, ref_count) == sizeof(gpointer));
+
+#define L3CD_TAG(self) (&(((const char *) self)[1]))
+
+/*****************************************************************************/
+
+#define _NMLOG_DOMAIN LOGD_IP4
+#define _NMLOG_PREFIX_NAME "ipv4ll"
+#define _NMLOG(level, ...) \
+ G_STMT_START \
+ { \
+ nm_log((level), \
+ (_NMLOG_DOMAIN), \
+ NULL, \
+ NULL, \
+ _NMLOG_PREFIX_NAME "[" NM_HASH_OBFUSCATE_PTR_FMT \
+ ",ifindex=%d]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+ NM_HASH_OBFUSCATE_PTR(self), \
+ nm_l3cfg_get_ifindex((self)->l3cfg) _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
+static void _ipv4ll_state_change_on_idle(NML3IPv4LL *self);
+
+static void _ipv4ll_state_change(NML3IPv4LL *self, gboolean is_on_idle_handler);
+
+static void _ipv4ll_set_timed_out_update(NML3IPv4LL *self, TimedOutState new_state);
+
+/*****************************************************************************/
+
+NM_UTILS_ENUM2STR_DEFINE(nm_l3_ipv4ll_state_to_string,
+ NML3IPv4LLState,
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_UNKNOWN, "unknown"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_DISABLED, "disabled"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_WAIT_FOR_LINK, "wait-for-link"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_EXTERNAL, "external"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_PROBING, "probing"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_DEFENDING, "defending"),
+ NM_UTILS_ENUM2STR(NM_L3_IPV4LL_STATE_READY, "ready"), );
+
+/*****************************************************************************/
+
+#define _ASSERT(self) \
+ G_STMT_START \
+ { \
+ NML3IPv4LL *const _self = (self); \
+ \
+ nm_assert(NM_IS_L3_IPV4LL(_self)); \
+ if (NM_MORE_ASSERTS > 5) { \
+ nm_assert(_self->addr == 0u || nm_utils_ip4_address_is_link_local(_self->addr)); \
+ nm_assert(!_self->l3cd || NM_IS_L3_CONFIG_DATA(_self->l3cd)); \
+ } \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
+NML3Cfg *
+nm_l3_ipv4ll_get_l3cfg(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return self->l3cfg;
+}
+
+int
+nm_l3_ipv4ll_get_ifindex(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return nm_l3cfg_get_ifindex(self->l3cfg);
+}
+
+NMPlatform *
+nm_l3_ipv4ll_get_platform(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return nm_l3cfg_get_platform(self->l3cfg);
+}
+
+/*****************************************************************************/
+
+NML3IPv4LLState
+nm_l3_ipv4ll_get_state(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return self->state;
+}
+
+static gboolean
+_ipv4ll_is_timed_out(NML3IPv4LL *self)
+{
+ _ASSERT(self);
+
+ return self->timed_out_expiry_msec != 0 && !self->timed_out_source;
+}
+
+gboolean
+nm_l3_ipv4ll_is_timed_out(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return _ipv4ll_is_timed_out(self);
+}
+
+in_addr_t
+nm_l3_ipv4ll_get_addr(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return self->addr;
+}
+
+const NML3ConfigData *
+nm_l3_ipv4ll_get_l3cd(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ return self->l3cd;
+}
+
+static void
+_ipv4ll_emit_signal_notify(NML3IPv4LL *self)
+{
+ NML3ConfigNotifyData notify_data;
+
+ self->notify_on_idle = FALSE;
+
+ notify_data.notify_type = NM_L3_CONFIG_NOTIFY_TYPE_IPV4LL_EVENT;
+ notify_data.ipv4ll_event = (typeof(notify_data.ipv4ll_event)){
+ .ipv4ll = self,
+ };
+ _nm_l3cfg_emit_signal_notify(self->l3cfg, &notify_data);
+}
+
+/*****************************************************************************/
+
+static NML3IPv4LLRegistration *
+_registration_update(NML3IPv4LL * self,
+ NML3IPv4LLRegistration *reg,
+ gboolean add,
+ guint timeout_msec)
+{
+ nm_auto_unref_l3ipv4ll NML3IPv4LL *self_unref_on_exit = NULL;
+ gboolean changed = FALSE;
+
+ if (reg) {
+ nm_assert(!self);
+ _ASSERT(reg->self);
+ self = reg->self;
+ nm_assert(c_list_contains(&self->reg_lst_head, &reg->reg_lst));
+ nm_assert(self == nm_l3_ipv4ll_register_get_instance(reg));
+ } else {
+ nm_assert(add);
+ _ASSERT(self);
+ }
+
+ if (!add) {
+ _LOGT("registration[" NM_HASH_OBFUSCATE_PTR_FMT "]: remove", NM_HASH_OBFUSCATE_PTR(reg));
+ c_list_unlink_stale(&reg->reg_lst);
+ if (c_list_is_empty(&self->reg_lst_head))
+ self_unref_on_exit = self;
+ nm_g_slice_free(reg);
+ reg = NULL;
+ goto out;
+ }
+
+ if (!reg) {
+ reg = g_slice_new(NML3IPv4LLRegistration);
+ *reg = (NML3IPv4LLRegistration){
+ .self = self,
+ .timeout_msec = timeout_msec,
+ };
+
+ if (c_list_is_empty(&self->reg_lst_head))
+ nm_l3_ipv4ll_ref(self);
+ c_list_link_tail(&self->reg_lst_head, &reg->reg_lst);
+ changed = TRUE;
+ _LOGT("registration[" NM_HASH_OBFUSCATE_PTR_FMT "]: add (timeout_msec=%u)",
+ NM_HASH_OBFUSCATE_PTR(reg),
+ timeout_msec);
+ } else {
+ if (reg->timeout_msec != timeout_msec) {
+ reg->timeout_msec = timeout_msec;
+ changed = TRUE;
+ }
+ if (changed) {
+ _LOGT("registration[" NM_HASH_OBFUSCATE_PTR_FMT "]: update (timeout_msec=%u)",
+ NM_HASH_OBFUSCATE_PTR(reg),
+ timeout_msec);
+ }
+ }
+
+out:
+ if (changed) {
+ self->reg_changed = TRUE;
+ _ipv4ll_state_change(self, FALSE);
+ }
+ return reg;
+}
+
+NML3IPv4LLRegistration *
+nm_l3_ipv4ll_register_new(NML3IPv4LL *self, guint timeout_msec)
+{
+ return _registration_update(self, NULL, TRUE, timeout_msec);
+}
+
+NML3IPv4LLRegistration *
+nm_l3_ipv4ll_register_update(NML3IPv4LLRegistration *reg, guint timeout_msec)
+{
+ return _registration_update(NULL, reg, TRUE, timeout_msec);
+}
+
+NML3IPv4LLRegistration *
+nm_l3_ipv4ll_register_remove(NML3IPv4LLRegistration *reg)
+{
+ return _registration_update(NULL, reg, FALSE, 0);
+}
+
+/*****************************************************************************/
+
+static gboolean
+_ip4_address_is_link_local(const NMPlatformIP4Address *a)
+{
+ nm_assert(a);
+
+ return nm_utils_ip4_address_is_link_local(a->address) && a->plen == ADDR_IPV4LL_PREFIX_LEN
+ && a->address == a->peer_address;
+}
+
+static gboolean
+_acd_info_is_good(const NML3AcdAddrInfo *acd_info)
+{
+ if (!acd_info)
+ return TRUE;
+
+ switch (acd_info->state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ return TRUE;
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ return FALSE;
+ }
+ nm_assert_not_reached();
+ return FALSE;
+}
+
+/*****************************************************************************/
+
+static NMPlatformIP4Address *
+_l3cd_config_plat_init_addr(NMPlatformIP4Address *a, int ifindex, in_addr_t addr)
+{
+ nm_assert(nm_utils_ip4_address_is_link_local(addr));
+
+ *a = (NMPlatformIP4Address){
+ .ifindex = ifindex,
+ .address = addr,
+ .peer_address = addr,
+ .plen = ADDR_IPV4LL_PREFIX_LEN,
+ .addr_source = NM_IP_CONFIG_SOURCE_IP4LL,
+ };
+ return a;
+}
+
+static NMPlatformIP4Route *
+_l3cd_config_plat_init_route(NMPlatformIP4Route *r, int ifindex)
+{
+ *r = (NMPlatformIP4Route){
+ .ifindex = ifindex,
+ .network = htonl(0xE0000000u),
+ .plen = 4,
+ .rt_source = NM_IP_CONFIG_SOURCE_IP4LL,
+ .table_any = TRUE,
+ .metric_any = TRUE,
+ };
+ return r;
+}
+
+static const NML3ConfigData *
+_l3cd_config_create(int ifindex, in_addr_t addr, NMDedupMultiIndex *multi_idx)
+{
+ nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
+ NMPlatformIP4Address a;
+ NMPlatformIP4Route r;
+
+ nm_assert(nm_utils_ip4_address_is_link_local(addr));
+ nm_assert(ifindex > 0);
+ nm_assert(multi_idx);
+
+ l3cd = nm_l3_config_data_new(multi_idx, ifindex);
+ nm_l3_config_data_set_source(l3cd, NM_IP_CONFIG_SOURCE_IP4LL);
+
+ nm_l3_config_data_add_address_4(l3cd, _l3cd_config_plat_init_addr(&a, ifindex, addr));
+ nm_l3_config_data_add_route_4(l3cd, _l3cd_config_plat_init_route(&r, ifindex));
+
+ return nm_l3_config_data_seal(g_steal_pointer(&l3cd));
+}
+
+static in_addr_t
+_l3cd_config_get_addr(const NML3ConfigData *l3cd)
+{
+ NMDedupMultiIter iter;
+ const NMPlatformIP4Address *pladdr;
+
+ if (!l3cd)
+ return 0u;
+
+ nm_l3_config_data_iter_ip4_address_for_each (&iter, l3cd, &pladdr) {
+ const in_addr_t addr = pladdr->address;
+
+ nm_assert(_ip4_address_is_link_local(pladdr));
+#if NM_MORE_ASSERTS > 10
+ {
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd2 = NULL;
+
+ l3cd2 = _l3cd_config_create(nm_l3_config_data_get_ifindex(l3cd),
+ addr,
+ nm_l3_config_data_get_multi_idx(l3cd));
+ nm_assert(nm_l3_config_data_equal(l3cd2, l3cd));
+ }
+#endif
+ return addr;
+ }
+
+ return nm_assert_unreachable_val(0u);
+}
+
+/*****************************************************************************/
+
+static void
+_ipv4ll_addrgen(NML3IPv4LL *self, gboolean generate_new_addr)
+{
+ CSipHash state;
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+ gboolean seed_changed = FALSE;
+ in_addr_t addr_new;
+ guint64 h;
+
+ _ASSERT(self);
+
+ /* MAC_HASH_KEY is the same as used by systemd. */
+#define MAC_HASH_KEY \
+ ((const guint8[16]){0xdf, \
+ 0x04, \
+ 0x22, \
+ 0x98, \
+ 0x3f, \
+ 0xad, \
+ 0x14, \
+ 0x52, \
+ 0xf9, \
+ 0x87, \
+ 0x2e, \
+ 0xd1, \
+ 0x9c, \
+ 0x70, \
+ 0xe2, \
+ 0xf2})
+
+ if (self->mac_set && (!self->seed_set || !nm_ether_addr_equal(&self->mac, &self->seed_mac))) {
+ /* systemd's ipv4ll library by default only hashes the MAC address (as we do here).
+ * This is also what previous versions of NetworkManager did (whenn using sd_ipv4ll).
+ *
+ * On the other hand, systemd-networkd uses net_get_name_persistent() of the device
+ * mixed with /etc/machine-id.
+ *
+ * See also: https://tools.ietf.org/html/rfc3927#section-2.1
+ *
+ * FIXME(l3cfg): At this point, maybe we should also mix it with nm_utils_host_id_get().
+ * This would get the behavior closer to what systemd-networkd does.
+ * Don't do that for now, because it would be a change in behavior compared
+ * to earlier versions of NetworkManager. */
+
+ c_siphash_init(&state, MAC_HASH_KEY);
+ c_siphash_append(&state, self->mac.ether_addr_octet, ETH_ALEN);
+ h = c_siphash_finalize(&state);
+
+ _LOGT("addr-gen: %sset seed (for " NM_ETHER_ADDR_FORMAT_STR ")",
+ self->seed_set ? "re" : "",
+ NM_ETHER_ADDR_FORMAT_VAL(&self->mac));
+
+ self->seed_set = TRUE;
+ self->seed_mac = self->mac;
+ self->seed.generation = htole64(0);
+ self->seed.value = htole64(h);
+ self->seed_reset_generation = FALSE;
+ self->addr = 0u;
+
+ seed_changed = TRUE;
+ }
+
+ if (!self->seed_set) {
+ /* we have no seed set (and consequently no MAC address set either).
+ * We cannot generate an address. */
+ nm_assert(self->addr == 0u);
+ return;
+ }
+
+ nm_assert(seed_changed || self->seed.generation != htole64(0u));
+
+ if (self->seed_reset_generation) {
+ _LOGT("addr-gen: reset seed (generation only)");
+ self->seed.generation = htole64(0);
+ self->addr = 0u;
+ seed_changed = TRUE;
+ }
+
+ if (!seed_changed && !generate_new_addr) {
+ /* neither did the caller request a new address, nor was the seed changed. The current
+ * address is still to be used. */
+ nm_assert(nm_utils_ip4_address_is_link_local(self->addr));
+ return;
+ }
+
+gen_addr:
+
+#define PICK_HASH_KEY \
+ ((const guint8[16]){0x15, \
+ 0xac, \
+ 0x82, \
+ 0xa6, \
+ 0xd6, \
+ 0x3f, \
+ 0x49, \
+ 0x78, \
+ 0x98, \
+ 0x77, \
+ 0x5d, \
+ 0x0c, \
+ 0x69, \
+ 0x02, \
+ 0x94, \
+ 0x0b})
+
+ h = c_siphash_hash(PICK_HASH_KEY, (const guint8 *) &self->seed, sizeof(self->seed));
+
+ self->seed.generation = htole64(le64toh(self->seed.generation) + 1u);
+
+ addr_new = htonl(h & UINT32_C(0x0000FFFF)) | NM_IPV4LL_NETWORK;
+
+ if (self->addr == addr_new || NM_IN_SET(ntohl(addr_new) & 0x0000FF00u, 0x0000u, 0xFF00u))
+ goto gen_addr;
+
+ nm_assert(nm_utils_ip4_address_is_link_local(addr_new));
+
+ _LOGT("addr-gen: set address %s", _nm_utils_inet4_ntop(addr_new, sbuf_addr));
+ self->addr = addr_new;
+}
+
+/*****************************************************************************/
+
+static void
+_ipv4ll_update_link(NML3IPv4LL *self, const NMPObject *plobj)
+{
+ char sbuf[ETH_ALEN * 3];
+ nm_auto_nmpobj const NMPObject *pllink_old = NULL;
+ const NMEtherAddr * mac_new;
+ gboolean changed;
+
+ if (self->plobj == plobj)
+ return;
+
+ pllink_old = g_steal_pointer(&self->plobj);
+ self->plobj = nmp_object_ref(plobj);
+
+ mac_new = NULL;
+ if (plobj) {
+ const NMPlatformLink *pllink = NMP_OBJECT_CAST_LINK(plobj);
+
+ if (pllink->l_address.len == ETH_ALEN)
+ mac_new = &pllink->l_address.ether_addr;
+ }
+
+ changed = FALSE;
+ if (!mac_new) {
+ if (self->mac_set) {
+ changed = TRUE;
+ self->mac_set = FALSE;
+ }
+ } else {
+ if (!self->mac_set || !nm_ether_addr_equal(mac_new, &self->mac)) {
+ changed = TRUE;
+ self->mac_set = TRUE;
+ self->mac = *mac_new;
+ }
+ }
+
+ if (changed) {
+ _LOGT("mac changed: %s",
+ self->mac_set ? _nm_utils_hwaddr_ntoa(&self->mac, ETH_ALEN, TRUE, sbuf, sizeof(sbuf))
+ : "unset");
+ }
+}
+
+/*****************************************************************************/
+
+static void
+_l3cd_config_add(NML3IPv4LL *self)
+{
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd = NULL;
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+ gboolean changed;
+
+ _ASSERT(self);
+ nm_assert(self->addr != 0u);
+ nm_assert(self->reg_timeout_msec > 0u);
+
+ if (_l3cd_config_get_addr(self->l3cd) != self->addr) {
+ l3cd = _l3cd_config_create(nm_l3_ipv4ll_get_ifindex(self),
+ self->addr,
+ nm_l3cfg_get_multi_idx(self->l3cfg));
+ nm_assert(!nm_l3_config_data_equal(l3cd, self->l3cd));
+ changed = TRUE;
+ } else
+ changed = FALSE;
+
+ if (!changed && !self->l3cd_timeout_msec_changed)
+ return;
+
+ self->l3cd_timeout_msec_changed = FALSE;
+
+ _LOGT("add l3cd config with %s (acd-timeout %u msec%s)",
+ _nm_utils_inet4_ntop(self->addr, sbuf_addr),
+ self->reg_timeout_msec,
+ changed ? "" : " changed");
+
+ if (changed) {
+ NM_SWAP(&l3cd, &self->l3cd);
+ self->notify_on_idle = TRUE;
+ }
+
+ if (!nm_l3cfg_add_config(self->l3cfg,
+ L3CD_TAG(self),
+ TRUE,
+ self->l3cd,
+ NM_L3CFG_CONFIG_PRIORITY_IPV4LL,
+ 0,
+ 0,
+ NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP4,
+ NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
+ 0,
+ 0,
+ NM_L3_ACD_DEFEND_TYPE_ONCE,
+ self->reg_timeout_msec,
+ NM_L3_CONFIG_MERGE_FLAGS_ONLY_FOR_ACD))
+ nm_assert_not_reached();
+
+ self->l3cfg_commit_handle = nm_l3cfg_commit_type_register(self->l3cfg,
+ NM_L3_CFG_COMMIT_TYPE_ASSUME,
+ self->l3cfg_commit_handle);
+ nm_l3cfg_commit_on_idle_schedule(self->l3cfg);
+}
+
+static gboolean
+_l3cd_config_remove(NML3IPv4LL *self)
+{
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd = NULL;
+
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ if (!self->l3cd)
+ return FALSE;
+
+ _LOGT("remove l3cd config");
+
+ self->notify_on_idle = TRUE;
+
+ l3cd = g_steal_pointer(&self->l3cd);
+ if (!nm_l3cfg_remove_config(self->l3cfg, L3CD_TAG(self), l3cd))
+ nm_assert_not_reached();
+
+ nm_l3cfg_commit_type_unregister(self->l3cfg, g_steal_pointer(&self->l3cfg_commit_handle));
+ nm_l3cfg_commit_on_idle_schedule(self->l3cfg);
+ return TRUE;
+}
+
+/*****************************************************************************/
+
+static const NMPlatformIP4Address *
+_ipv4ll_platform_ip4_address_lookup(NML3IPv4LL *self, in_addr_t addr)
+{
+ const NMPlatformIP4Address *pladdr;
+
+ if (addr == 0u)
+ return NULL;
+
+ nm_assert(nm_utils_ip4_address_is_link_local(addr));
+
+ pladdr = nm_platform_ip4_address_get(nm_l3_ipv4ll_get_platform(self),
+ nm_l3_ipv4ll_get_ifindex(self),
+ addr,
+ ADDR_IPV4LL_PREFIX_LEN,
+ addr);
+
+ nm_assert(!pladdr || pladdr->address == addr);
+ nm_assert(!pladdr || _ip4_address_is_link_local(pladdr));
+ return pladdr;
+}
+
+static const NML3AcdAddrInfo *
+_ipv4ll_l3cfg_get_acd_addr_info(NML3IPv4LL *self, in_addr_t addr)
+{
+ if (addr == 0u)
+ return NULL;
+
+ nm_assert(nm_utils_ip4_address_is_link_local(addr));
+ return nm_l3cfg_get_acd_addr_info(self->l3cfg, addr);
+}
+
+static const NMPlatformIP4Address *
+_ipv4ll_platform_find_addr(NML3IPv4LL *self, const NML3AcdAddrInfo **out_acd_info)
+{
+ const NMPlatformIP4Address *addr_without_acd_info = NULL;
+ NMDedupMultiIter iter;
+ NMPLookup lookup;
+ const NMPObject * obj;
+ const NML3AcdAddrInfo * acd_info;
+ const NMPlatformIP4Address *addr;
+
+ nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP4_ADDRESS, nm_l3_ipv4ll_get_ifindex(self));
+ nm_platform_iter_obj_for_each (&iter, nm_l3_ipv4ll_get_platform(self), &lookup, &obj) {
+ addr = NMP_OBJECT_CAST_IP4_ADDRESS(obj);
+ if (!_ip4_address_is_link_local(addr))
+ continue;
+
+ acd_info = _ipv4ll_l3cfg_get_acd_addr_info(self, addr->address);
+ if (!_acd_info_is_good(acd_info))
+ continue;
+
+ if (acd_info) {
+ /* We have a good acd_info. We won't find a better one. Return it. */
+ NM_SET_OUT(out_acd_info, acd_info);
+ return addr;
+ }
+
+ if (!addr_without_acd_info) {
+ /* remember a potential candidate address that has no acd_info. */
+ addr_without_acd_info = addr;
+ }
+ }
+
+ if (addr_without_acd_info) {
+ NM_SET_OUT(out_acd_info, NULL);
+ return addr_without_acd_info;
+ }
+
+ return NULL;
+}
+
+/*****************************************************************************/
+
+static gboolean
+_ipv4ll_set_timed_out_timeout_cb(gpointer user_data)
+{
+ NML3IPv4LL *self = user_data;
+
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_IS_TIMED_OUT);
+ if (self->notify_on_idle)
+ _ipv4ll_emit_signal_notify(self);
+ return G_SOURCE_REMOVE;
+}
+
+static void
+_ipv4ll_set_timed_out_update(NML3IPv4LL *self, TimedOutState new_state)
+{
+ gboolean before;
+
+ before = _ipv4ll_is_timed_out(self);
+
+ switch (new_state) {
+ case TIMED_OUT_STATE_IS_TIMED_OUT:
+ if (self->timed_out_expiry_msec == 0) {
+ nm_assert(!self->timed_out_source);
+ self->timed_out_expiry_msec = 1;
+ }
+ nm_clear_g_source_inst(&self->timed_out_source);
+ break;
+ case TIMED_OUT_STATE_IS_NOT_TIMED_OUT:
+ self->timed_out_expiry_msec = 0;
+ nm_clear_g_source_inst(&self->timed_out_source);
+ break;
+ case TIMED_OUT_STATE_HAVE_TIMER_RUNNING:
+ {
+ gint64 now_msec = nm_utils_get_monotonic_timestamp_msec();
+ guint timeout_msec;
+ gint64 expiry_msec;
+
+ nm_assert(self->reg_timeout_msec > 0u);
+
+ timeout_msec = nm_mult_clamped_u(TIMED_OUT_TIME_FACTOR, self->reg_timeout_msec);
+ expiry_msec = now_msec + timeout_msec;
+
+ if (self->timed_out_expiry_msec == 0 || self->timed_out_expiry_msec < expiry_msec) {
+ self->timed_out_expiry_msec = expiry_msec;
+ nm_clear_g_source_inst(&self->timed_out_source);
+ self->timed_out_source = nm_g_timeout_source_new(timeout_msec,
+ G_PRIORITY_DEFAULT,
+ _ipv4ll_set_timed_out_timeout_cb,
+ self,
+ NULL);
+ g_source_attach(self->timed_out_source, NULL);
+ }
+ break;
+ }
+ }
+
+ if (before != _ipv4ll_is_timed_out(self)) {
+ self->notify_on_idle = TRUE;
+ _LOGT("state: set timed-out-is-bad=%d", (!before));
+ }
+}
+
+static gboolean
+_ipv4ll_set_state(NML3IPv4LL *self, NML3IPv4LLState state)
+{
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+ char sbuf100[100];
+
+ if (self->state == state)
+ return FALSE;
+ self->state = state;
+ self->notify_on_idle = TRUE;
+ _LOGT("state: set state %s (addr=%s)",
+ nm_l3_ipv4ll_state_to_string(state, sbuf100, sizeof(sbuf100)),
+ _nm_utils_inet4_ntop(self->addr, sbuf_addr));
+ return TRUE;
+}
+
+static void
+_ipv4ll_state_change(NML3IPv4LL *self, gboolean is_on_idle_handler)
+{
+ nm_auto_unref_l3ipv4ll NML3IPv4LL *self_keep_alive = NULL;
+ const NMPlatformIP4Address * pladdr;
+ const NML3AcdAddrInfo * acd_info;
+ gboolean generate_new_addr;
+ NML3IPv4LLState new_state;
+ in_addr_t addr0;
+ NML3IPv4LLRegistration * reg;
+
+ _ASSERT(self);
+
+ self_keep_alive = nm_l3_ipv4ll_ref(self);
+
+ nm_clear_g_source_inst(&self->state_change_on_idle_source);
+
+ addr0 = self->addr;
+
+ if (self->reg_changed) {
+ guint timeout_msec = self->reg_timeout_msec;
+
+ self->reg_changed = FALSE;
+
+ if (c_list_is_empty(&self->reg_lst_head))
+ timeout_msec = 0;
+ else {
+ timeout_msec = G_MAXUINT;
+ c_list_for_each_entry (reg, &self->reg_lst_head, reg_lst) {
+ if (reg->timeout_msec < timeout_msec)
+ timeout_msec = reg->timeout_msec;
+ if (reg->timeout_msec == 0)
+ break;
+ }
+ }
+ if (self->reg_timeout_msec != timeout_msec) {
+ self->reg_timeout_msec = timeout_msec;
+ self->l3cd_timeout_msec_changed = TRUE;
+ }
+ }
+
+ if (self->reg_timeout_msec == 0) {
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_IS_NOT_TIMED_OUT);
+ if (_ipv4ll_set_state(self, NM_L3_IPV4LL_STATE_DISABLED))
+ _l3cd_config_remove(self);
+ goto out_notify;
+ }
+
+ if (!self->mac_set) {
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_HAVE_TIMER_RUNNING);
+ if (_ipv4ll_set_state(self, NM_L3_IPV4LL_STATE_WAIT_FOR_LINK))
+ _l3cd_config_remove(self);
+ else
+ nm_assert(!self->l3cd);
+ goto out_notify;
+ }
+
+ if (self->state <= NM_L3_IPV4LL_STATE_EXTERNAL) {
+ pladdr = _ipv4ll_platform_ip4_address_lookup(self, self->addr);
+ if (pladdr) {
+ if (!_acd_info_is_good(_ipv4ll_l3cfg_get_acd_addr_info(self, self->addr)))
+ pladdr = NULL;
+ }
+ if (!pladdr)
+ pladdr = _ipv4ll_platform_find_addr(self, NULL);
+
+ if (pladdr) {
+ /* we have an externally configured address. Check whether we can use it. */
+ self->addr = pladdr->address;
+ self->notify_on_idle = TRUE;
+ _ipv4ll_set_state(self, NM_L3_IPV4LL_STATE_EXTERNAL);
+ _l3cd_config_add(self);
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_IS_NOT_TIMED_OUT);
+ goto out_notify;
+ }
+ }
+
+ generate_new_addr = FALSE;
+ while (TRUE) {
+ _ipv4ll_addrgen(self, generate_new_addr);
+ acd_info = _ipv4ll_l3cfg_get_acd_addr_info(self, self->addr);
+ if (_acd_info_is_good(acd_info))
+ break;
+ generate_new_addr = TRUE;
+ }
+
+ nm_assert(_acd_info_is_good(acd_info));
+ switch (acd_info ? acd_info->state : NM_L3_ACD_ADDR_STATE_INIT) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ new_state = NM_L3_IPV4LL_STATE_PROBING;
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_HAVE_TIMER_RUNNING);
+ goto out_is_good_1;
+ case NM_L3_ACD_ADDR_STATE_READY:
+ new_state = NM_L3_IPV4LL_STATE_READY;
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_HAVE_TIMER_RUNNING);
+ goto out_is_good_1;
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ new_state = NM_L3_IPV4LL_STATE_DEFENDING;
+ _ipv4ll_set_timed_out_update(self, TIMED_OUT_STATE_IS_NOT_TIMED_OUT);
+ goto out_is_good_1;
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ nm_assert_not_reached();
+ goto out_notify;
+ }
+ nm_assert_not_reached();
+ goto out_notify;
+out_is_good_1:
+ _ipv4ll_set_state(self, new_state);
+ _l3cd_config_add(self);
+ if (self->addr != addr0)
+ self->notify_on_idle = TRUE;
+ goto out_notify;
+
+out_notify:
+ if (self->notify_on_idle) {
+ if (is_on_idle_handler)
+ _ipv4ll_emit_signal_notify(self);
+ else
+ _ipv4ll_state_change_on_idle(self);
+ }
+}
+
+static gboolean
+_ipv4ll_state_change_on_idle_cb(gpointer user_data)
+{
+ NML3IPv4LL *self = user_data;
+
+ _ipv4ll_state_change(self, TRUE);
+ return G_SOURCE_REMOVE;
+}
+
+static void
+_ipv4ll_state_change_on_idle(NML3IPv4LL *self)
+{
+ nm_assert(NM_IS_L3_IPV4LL(self));
+
+ if (!self->state_change_on_idle_source) {
+ self->state_change_on_idle_source =
+ nm_g_idle_source_new(G_PRIORITY_DEFAULT, _ipv4ll_state_change_on_idle_cb, self, NULL);
+ g_source_attach(self->state_change_on_idle_source, NULL);
+ }
+}
+
+/*****************************************************************************/
+
+static void
+_l3cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NML3IPv4LL *self)
+{
+ if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE) {
+ /* NMl3Cfg only reloads the platform link during the idle handler. Pick it up now. */
+ _ipv4ll_update_link(self, nm_l3cfg_get_plobj(l3cfg, FALSE));
+
+ /* theoretically, this even is already on an idle handler. However, we share
+ * the call with other signal handlers, so at this point we don't want to
+ * emit additional signals. Thus pass %FALSE to _ipv4ll_state_change(). */
+ _ipv4ll_state_change(self, FALSE);
+ return;
+ }
+
+ if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT) {
+ if (self->l3cd
+ && nm_l3_acd_addr_info_find_track_info(&notify_data->acd_event.info,
+ L3CD_TAG(self),
+ self->l3cd,
+ NULL)) {
+ _ipv4ll_state_change(self, FALSE);
+ }
+ return;
+ }
+}
+
+/*****************************************************************************/
+
+NML3IPv4LL *
+nm_l3_ipv4ll_new(NML3Cfg *l3cfg)
+{
+ NML3IPv4LL *self;
+
+ g_return_val_if_fail(NM_IS_L3CFG(l3cfg), NULL);
+
+ self = g_slice_new(NML3IPv4LL);
+ *self = (NML3IPv4LL){
+ .l3cfg = g_object_ref(l3cfg),
+ .ref_count = 1,
+ .reg_lst_head = C_LIST_INIT(self->reg_lst_head),
+ .l3cfg_commit_handle = NULL,
+ .state_change_on_idle_source = NULL,
+ .l3cd = NULL,
+ .plobj = NULL,
+ .addr = 0u,
+ .state = NM_L3_IPV4LL_STATE_DISABLED,
+ .reg_timeout_msec = 0,
+ .notify_on_idle = TRUE,
+ .l3cfg_signal_notify_id =
+ g_signal_connect(l3cfg, NM_L3CFG_SIGNAL_NOTIFY, G_CALLBACK(_l3cfg_notify_cb), self),
+ .seed_set = FALSE,
+ .seed_reset_generation = FALSE,
+ };
+
+ _LOGT("created: l3cfg=" NM_HASH_OBFUSCATE_PTR_FMT, NM_HASH_OBFUSCATE_PTR(l3cfg));
+
+ _ipv4ll_update_link(self, nm_l3cfg_get_plobj(l3cfg, FALSE));
+ _ipv4ll_state_change(self, FALSE);
+ return self;
+}
+
+NML3IPv4LL *
+nm_l3_ipv4ll_ref(NML3IPv4LL *self)
+{
+ if (!self)
+ return NULL;
+
+ _ASSERT(self);
+
+ nm_assert(self->ref_count < G_MAXINT);
+ self->ref_count++;
+ return self;
+}
+
+void
+nm_l3_ipv4ll_unref(NML3IPv4LL *self)
+{
+ if (!self)
+ return;
+
+ _ASSERT(self);
+
+ if (--self->ref_count > 0)
+ return;
+
+ if (nm_l3cfg_get_ipv4ll(self->l3cfg) == self)
+ _nm_l3cfg_unregister_ipv4ll(self->l3cfg);
+
+ _LOGT("finalize");
+
+ nm_assert(c_list_is_empty(&self->reg_lst_head));
+
+ if (self->l3cd) {
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd = NULL;
+
+ l3cd = g_steal_pointer(&self->l3cd);
+ if (!nm_l3cfg_remove_config(self->l3cfg, L3CD_TAG(self), l3cd))
+ nm_assert_not_reached();
+
+ nm_l3cfg_commit_type_unregister(self->l3cfg, g_steal_pointer(&self->l3cfg_commit_handle));
+ nm_l3cfg_commit_on_idle_schedule(self->l3cfg);
+ } else
+ nm_assert(!self->l3cfg_commit_handle);
+
+ nm_clear_g_source_inst(&self->state_change_on_idle_source);
+ nm_clear_g_source_inst(&self->timed_out_source);
+
+ nm_clear_g_signal_handler(self->l3cfg, &self->l3cfg_signal_notify_id);
+
+ g_clear_object(&self->l3cfg);
+ nmp_object_unref(self->plobj);
+ nm_g_slice_free(self);
+}
diff --git a/src/nm-l3-ipv4ll.h b/src/nm-l3-ipv4ll.h
new file mode 100644
index 0000000000..4509f95c4f
--- /dev/null
+++ b/src/nm-l3-ipv4ll.h
@@ -0,0 +1,118 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+
+#ifndef __NM_L3_IPV4LL_H__
+#define __NM_L3_IPV4LL_H__
+
+#include "nm-l3cfg.h"
+
+/*****************************************************************************/
+
+typedef enum _nm_packed {
+ NM_L3_IPV4LL_STATE_UNKNOWN,
+ NM_L3_IPV4LL_STATE_DISABLED,
+ NM_L3_IPV4LL_STATE_WAIT_FOR_LINK,
+ NM_L3_IPV4LL_STATE_EXTERNAL,
+ NM_L3_IPV4LL_STATE_PROBING,
+ NM_L3_IPV4LL_STATE_READY,
+ NM_L3_IPV4LL_STATE_DEFENDING,
+} NML3IPv4LLState;
+
+const char *nm_l3_ipv4ll_state_to_string(NML3IPv4LLState val, char *buf, gsize len);
+
+static inline gboolean
+nm_l3_ipv4ll_state_is_good(NML3IPv4LLState state)
+{
+ switch (state) {
+ case NM_L3_IPV4LL_STATE_UNKNOWN:
+ case NM_L3_IPV4LL_STATE_DISABLED:
+ case NM_L3_IPV4LL_STATE_WAIT_FOR_LINK:
+ case NM_L3_IPV4LL_STATE_PROBING:
+ return FALSE;
+ case NM_L3_IPV4LL_STATE_EXTERNAL:
+ case NM_L3_IPV4LL_STATE_READY:
+ case NM_L3_IPV4LL_STATE_DEFENDING:
+ return TRUE;
+ }
+ return nm_assert_unreachable_val(FALSE);
+}
+
+/*****************************************************************************/
+
+typedef struct _NML3IPv4LL NML3IPv4LL;
+
+static inline gboolean
+NM_IS_L3_IPV4LL(const NML3IPv4LL *self)
+{
+ nm_assert(!self
+ || (NM_IS_L3CFG(*((NML3Cfg **) self))
+ && (*((int *) (((char *) self) + sizeof(gpointer)))) > 0));
+ return !!self;
+}
+
+NML3IPv4LL *nm_l3_ipv4ll_new(NML3Cfg *self);
+
+NML3IPv4LL *nm_l3_ipv4ll_ref(NML3IPv4LL *self);
+void nm_l3_ipv4ll_unref(NML3IPv4LL *self);
+
+NM_AUTO_DEFINE_FCN0(NML3IPv4LL *, _nm_auto_unref_l3ipv4ll, nm_l3_ipv4ll_unref);
+#define nm_auto_unref_l3ipv4ll nm_auto(_nm_auto_unref_l3ipv4ll)
+
+/*****************************************************************************/
+
+NML3Cfg *nm_l3_ipv4ll_get_l3cfg(NML3IPv4LL *self);
+
+int nm_l3_ipv4ll_get_ifindex(NML3IPv4LL *self);
+
+NMPlatform *nm_l3_ipv4ll_get_platform(NML3IPv4LL *self);
+
+/*****************************************************************************/
+
+/* By default, NML3IPv4LL is disabled. You also need to register (enable) it.
+ * The intent of this API is that multiple users can enable/register their own
+ * settings, and NML3IPv4LL will mediate the different requests.
+ *
+ * Also, by setting timeout_msec to zero, NML3IPv4LL is disabled again (zero
+ * wins over all timeouts). This is useful if you do DHCP and IPv4LL on the
+ * same interface. You possibly want to disable IPv4LL if you have a valid
+ * DHCP lease. By registering a timeout_msec to zero, you can disable IPv4LL.
+ *
+ * Also, a registration keeps the NML3IPv4LL instance alive (it also takes
+ * a reference). */
+
+typedef struct _NML3IPv4LLRegistration NML3IPv4LLRegistration;
+
+NML3IPv4LLRegistration *nm_l3_ipv4ll_register_new(NML3IPv4LL *self, guint timeout_msec);
+
+NML3IPv4LLRegistration *nm_l3_ipv4ll_register_update(NML3IPv4LLRegistration *reg,
+ guint timeout_msec);
+
+NML3IPv4LLRegistration *nm_l3_ipv4ll_register_remove(NML3IPv4LLRegistration *reg);
+
+NM_AUTO_DEFINE_FCN0(NML3IPv4LLRegistration *,
+ _nm_auto_remove_l3ipv4ll_registration,
+ nm_l3_ipv4ll_register_remove);
+#define nm_auto_remove_l3ipv4ll_registration nm_auto(_nm_auto_remove_l3ipv4ll_registration)
+
+static inline NML3IPv4LL *
+nm_l3_ipv4ll_register_get_instance(NML3IPv4LLRegistration *reg)
+{
+ NML3IPv4LL *ipv4ll;
+
+ if (!reg)
+ return NULL;
+ ipv4ll = *((NML3IPv4LL **) reg);
+ nm_assert(NM_IS_L3_IPV4LL(ipv4ll));
+ return ipv4ll;
+}
+
+/*****************************************************************************/
+
+NML3IPv4LLState nm_l3_ipv4ll_get_state(NML3IPv4LL *self);
+
+gboolean nm_l3_ipv4ll_is_timed_out(NML3IPv4LL *self);
+
+in_addr_t nm_l3_ipv4ll_get_addr(NML3IPv4LL *self);
+
+const NML3ConfigData *nm_l3_ipv4ll_get_l3cd(NML3IPv4LL *self);
+
+#endif /* __NM_L3_IPV4LL_H__ */
diff --git a/src/nm-l3cfg.c b/src/nm-l3cfg.c
index 7b1e6f22d5..de5f80e5a2 100644
--- a/src/nm-l3cfg.c
+++ b/src/nm-l3cfg.c
@@ -12,17 +12,21 @@
#include "platform/nmp-object.h"
#include "nm-netns.h"
#include "n-acd/src/n-acd.h"
+#include "nm-l3-ipv4ll.h"
/*****************************************************************************/
+G_STATIC_ASSERT(NM_ACD_TIMEOUT_RFC5227_MSEC == N_ACD_TIMEOUT_RFC5227);
+
#define ACD_SUPPORTED_ETH_ALEN ETH_ALEN
#define ACD_ENSURE_RATELIMIT_MSEC ((guint32) 4000u)
#define ACD_WAIT_PROBING_EXTRA_TIME_MSEC ((guint32)(1000u + ACD_ENSURE_RATELIMIT_MSEC))
#define ACD_WAIT_PROBING_EXTRA_TIME2_MSEC ((guint32) 1000u)
-#define ACD_WAIT_PROBING_RESTART_TIME_MSEC ((guint32) 8000u)
#define ACD_MAX_TIMEOUT_MSEC ((guint32) 30000u)
#define ACD_WAIT_TIME_PROBING_FULL_RESTART_MSEC ((guint32) 30000u)
-#define ACD_WAIT_TIME_ANNOUNCE_RESTART_MSEC ((guint32) 20000u)
+#define ACD_WAIT_TIME_CONFLICT_RESTART_MSEC ((guint32) 120000u)
+#define ACD_WAIT_TIME_ANNOUNCE_RESTART_MSEC ((guint32) 30000u)
+#define ACD_DEFENDCONFLICT_INFO_RATELIMIT_MSEC ((guint32) 30000u)
static gboolean
ACD_ADDR_SKIP(in_addr_t addr)
@@ -39,13 +43,16 @@ ACD_ADDR_SKIP(in_addr_t addr)
ACD_TRACK_PTR2((acd_track)->l3cd, (acd_track)->obj, (acd_track)->tag)
typedef enum {
- ACD_STATE_CHANGE_MODE_INIT,
+ ACD_STATE_CHANGE_MODE_NACD_CONFLICT = N_ACD_EVENT_CONFLICT,
+ ACD_STATE_CHANGE_MODE_NACD_DEFENDED = N_ACD_EVENT_DEFENDED,
+ ACD_STATE_CHANGE_MODE_NACD_DOWN = N_ACD_EVENT_DOWN,
+ ACD_STATE_CHANGE_MODE_NACD_READY = N_ACD_EVENT_READY,
+ ACD_STATE_CHANGE_MODE_NACD_USED = N_ACD_EVENT_USED,
+
+ ACD_STATE_CHANGE_MODE_INIT = _N_ACD_EVENT_N,
+ ACD_STATE_CHANGE_MODE_INIT_REAPPLY,
ACD_STATE_CHANGE_MODE_POST_COMMIT,
- ACD_STATE_CHANGE_MODE_NACD_READY,
- ACD_STATE_CHANGE_MODE_NACD_USED,
- ACD_STATE_CHANGE_MODE_NACD_DOWN,
-
ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED,
ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED,
ACD_STATE_CHANGE_MODE_LINK_NOW_UP,
@@ -53,57 +60,41 @@ typedef enum {
ACD_STATE_CHANGE_MODE_TIMEOUT,
} AcdStateChangeMode;
-typedef struct {
- CList acd_track_lst;
- const NMPObject * obj;
- const NML3ConfigData *l3cd;
- gconstpointer tag;
- guint32 acd_timeout_msec;
- bool acd_dirty : 1;
- bool acd_failed_notified : 1;
-} AcdTrackData;
-
-typedef enum _nm_packed {
- ACD_STATE_INIT,
- ACD_STATE_PROBING,
- ACD_STATE_PROBE_DONE,
- ACD_STATE_ANNOUNCING,
-} AcdState;
+G_STATIC_ASSERT(G_STRUCT_OFFSET(NML3AcdAddrInfo, addr) == 0);
typedef struct {
- in_addr_t addr;
-
- /* This is only relevant while in state ACD_STATE_PROBING. It's the
- * duration for how long we probe, and @probing_timestamp_msec is the
- * timestamp when we start probing. */
- guint32 probing_timeout_msec;
+ NML3AcdAddrInfo info;
CList acd_lst;
- CList acd_notify_complete_lst;
- CList acd_track_lst_head;
-
- NML3Cfg *self;
+ CList acd_event_notify_lst;
NAcdProbe *nacd_probe;
- GSource *acd_timeout_source;
- gint64 acd_timeout_expiry_msec;
+ GSource *acd_data_timeout_source;
/* see probing_timeout_msec. */
gint64 probing_timestamp_msec;
- /* the ACD state for this address. */
- AcdState acd_state;
+ gint64 last_defendconflict_timestamp_msec;
+
+ guint n_track_infos_alloc;
+
+ /* This is only relevant while in state NM_L3_ACD_ADDR_STATE_PROBING. It's the
+ * duration for how long we probe, and @probing_timestamp_msec is the
+ * timestamp when we start probing. */
+ guint32 probing_timeout_msec;
- /* The probe result. This is only relevant if @acd_state is ACD_STATE_PROBE_DONE.
- * In state ACD_STATE_ANNOUNCING the @probe_result must be TRUE. */
- bool probe_result : 1;
+ NMEtherAddr last_conflict_addr;
- bool announcing_failed_is_retrying : 1;
+ NML3AcdDefendType acd_defend_type_desired : 3;
+ NML3AcdDefendType acd_defend_type_current : 3;
+ bool acd_defend_type_is_active : 1;
- bool initializing : 1;
+ bool track_infos_changed : 1;
} AcdData;
+G_STATIC_ASSERT(G_STRUCT_OFFSET(AcdData, info.addr) == 0);
+
struct _NML3CfgCommitTypeHandle {
CList commit_type_lst;
NML3CfgCommitType commit_type;
@@ -133,11 +124,12 @@ typedef struct {
};
guint32 default_route_penalty_x[2];
};
- gconstpointer tag;
- guint64 pseudo_timestamp;
- int priority;
- guint32 acd_timeout_msec;
- bool dirty : 1;
+ gconstpointer tag_confdata;
+ guint64 pseudo_timestamp_confdata;
+ int priority_confdata;
+ guint32 acd_timeout_msec_confdata;
+ NML3AcdDefendType acd_defend_type_confdata : 3;
+ bool dirty_confdata : 1;
} L3ConfigData;
/*****************************************************************************/
@@ -155,6 +147,8 @@ typedef struct _NML3CfgPrivate {
GArray *property_emit_list;
GArray *l3_config_datas;
+ NML3IPv4LL *ipv4ll;
+
const NML3ConfigData *combined_l3cd_merged;
const NML3ConfigData *combined_l3cd_commited;
@@ -170,11 +164,14 @@ typedef struct _NML3CfgPrivate {
GHashTable *acd_lst_hash;
CList acd_lst_head;
- CList acd_notify_complete_lst_head;
+ CList acd_event_notify_lst_head;
NAcd * nacd;
GSource *nacd_source;
+ GSource *nacd_event_down_source;
+ gint64 nacd_event_down_ratelimited_until_msec;
+
/* This is for rate-limiting the creation of nacd instance. */
GSource *nacd_instance_ensure_retry;
@@ -198,16 +195,35 @@ typedef struct _NML3CfgPrivate {
guint externally_removed_objs_cnt_routes_x[2];
};
+ union {
+ struct {
+ GPtrArray *last_addresses_6;
+ GPtrArray *last_addresses_4;
+ };
+ GPtrArray *last_addresses_x[2];
+ };
+
+ union {
+ struct {
+ GPtrArray *last_routes_6;
+ GPtrArray *last_routes_4;
+ };
+ GPtrArray *last_routes_x[2];
+ };
+
guint routes_temporary_not_available_id;
+ gint8 commit_reentrant_count;
+
bool commit_type_update_sticky : 1;
bool acd_is_pending : 1;
- bool acd_is_announcing : 1;
bool nacd_acd_not_supported : 1;
bool acd_ipv4_addresses_on_link_has : 1;
+ bool changed_configs_configs : 1;
+ bool changed_configs_acd_state : 1;
} NML3CfgPrivate;
struct _NML3CfgClass {
@@ -234,15 +250,16 @@ G_DEFINE_TYPE(NML3Cfg, nm_l3cfg, G_TYPE_OBJECT)
} \
G_STMT_END
-#define _LOGT_acd(acd_data, ...) \
- G_STMT_START \
- { \
- char _sbuf_acd[NM_UTILS_INET_ADDRSTRLEN]; \
- \
- _LOGT("acd[%s]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
- _nm_utils_inet4_ntop((acd_data)->addr, _sbuf_acd) \
- _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
- } \
+#define _LOGT_acd(acd_data, ...) \
+ G_STMT_START \
+ { \
+ char _sbuf_acd[NM_UTILS_INET_ADDRSTRLEN]; \
+ \
+ _LOGT("acd[%s, %s]: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+ _nm_utils_inet4_ntop((acd_data)->info.addr, _sbuf_acd), \
+ _l3_acd_addr_state_to_string((acd_data)->info.state) \
+ _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
+ } \
G_STMT_END
/*****************************************************************************/
@@ -251,7 +268,7 @@ static void _l3_commit(NML3Cfg *self, NML3CfgCommitType commit_type, gboolean is
static void _property_emit_notify(NML3Cfg *self, NML3CfgPropertyEmitType emit_type);
-static void _l3_acd_data_notify_acd_completed_all(NML3Cfg *self);
+static void _nm_l3cfg_emit_signal_notify_acd_event_all(NML3Cfg *self);
static gboolean _acd_has_valid_link(const NMPObject *obj,
const guint8 ** out_addr_bin,
@@ -260,12 +277,11 @@ static gboolean _acd_has_valid_link(const NMPObject *obj,
static void
_l3_acd_nacd_instance_reset(NML3Cfg *self, NMTernary start_timer, gboolean acd_data_notify);
-static void _l3_acd_data_prune(NML3Cfg *self, gboolean all);
-
static void _l3_acd_data_state_change(NML3Cfg * self,
AcdData * acd_data,
AcdStateChangeMode mode,
- NAcdEvent * event);
+ const NMEtherAddr *sender,
+ gint64 * p_now_msec);
static AcdData *_l3_acd_data_find(NML3Cfg *self, in_addr_t addr);
@@ -282,7 +298,8 @@ static NM_UTILS_ENUM2STR_DEFINE(_l3_cfg_commit_type_to_string,
static NM_UTILS_ENUM2STR_DEFINE(
_l3_config_notify_type_to_string,
NML3ConfigNotifyType,
- NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED, "acd-complete"),
+ NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT, "acd-event"),
+ NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_IPV4LL_EVENT, "ipv4ll-event"),
NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE, "platform-change"),
NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE, "platform-change-on-idle"),
NM_UTILS_ENUM2STR(NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT, "post-commit"),
@@ -290,6 +307,36 @@ static NM_UTILS_ENUM2STR_DEFINE(
"routes-temporary-not-available-expired"),
NM_UTILS_ENUM2STR_IGNORE(_NM_L3_CONFIG_NOTIFY_TYPE_NUM), );
+static NM_UTILS_ENUM2STR_DEFINE(_l3_acd_defend_type_to_string,
+ NML3AcdDefendType,
+ NM_UTILS_ENUM2STR(NM_L3_ACD_DEFEND_TYPE_ALWAYS, "always"),
+ NM_UTILS_ENUM2STR(NM_L3_ACD_DEFEND_TYPE_NEVER, "never"),
+ NM_UTILS_ENUM2STR(NM_L3_ACD_DEFEND_TYPE_NONE, "none"),
+ NM_UTILS_ENUM2STR(NM_L3_ACD_DEFEND_TYPE_ONCE, "once"), );
+
+static NM_UTILS_LOOKUP_DEFINE(_l3_acd_defend_type_to_nacd,
+ NML3AcdDefendType,
+ int,
+ NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(0),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_DEFEND_TYPE_ALWAYS,
+ N_ACD_DEFEND_ALWAYS),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_DEFEND_TYPE_ONCE, N_ACD_DEFEND_ONCE),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_DEFEND_TYPE_NEVER, N_ACD_DEFEND_NEVER),
+ NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER(), );
+
+static NM_UTILS_LOOKUP_DEFINE(_l3_acd_addr_state_to_string,
+ NML3AcdAddrState,
+ const char *,
+ NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(NULL),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_CONFLICT, "conflict"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_READY, "ready"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_DEFENDING, "defending"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_INIT, "init"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_PROBING, "probing"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED,
+ "external-removed"),
+ NM_UTILS_LOOKUP_ITEM(NM_L3_ACD_ADDR_STATE_USED, "used"), );
+
/*****************************************************************************/
static const char *
@@ -297,9 +344,11 @@ _l3_config_notify_data_to_string(const NML3ConfigNotifyData *notify_data,
char * sbuf,
gsize sbuf_size)
{
- char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
- char *s = sbuf;
- gsize l = sbuf_size;
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+ char sbuf100[100];
+ char * s = sbuf;
+ gsize l = sbuf_size;
+ in_addr_t addr4;
nm_assert(sbuf);
nm_assert(sbuf_size > 0);
@@ -308,12 +357,12 @@ _l3_config_notify_data_to_string(const NML3ConfigNotifyData *notify_data,
nm_utils_strbuf_seek_end(&s, &l);
switch (notify_data->notify_type) {
- case NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED:
+ case NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT:
nm_utils_strbuf_append(&s,
&l,
- ", addr=%s, probe-result=%d",
- _nm_utils_inet4_ntop(notify_data->acd_completed.addr, sbuf_addr),
- (int) notify_data->acd_completed.probe_result);
+ ", addr=%s, state=%s",
+ _nm_utils_inet4_ntop(notify_data->acd_event.info.addr, sbuf_addr),
+ _l3_acd_addr_state_to_string(notify_data->acd_event.info.state));
break;
case NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE:
nm_utils_strbuf_append(
@@ -330,6 +379,19 @@ _l3_config_notify_data_to_string(const NML3ConfigNotifyData *notify_data,
", obj-type-flags=0x%x",
notify_data->platform_change_on_idle.obj_type_flags);
break;
+ case NM_L3_CONFIG_NOTIFY_TYPE_IPV4LL_EVENT:
+ nm_assert(NM_IS_L3_IPV4LL(notify_data->ipv4ll_event.ipv4ll));
+ addr4 = nm_l3_ipv4ll_get_addr(notify_data->ipv4ll_event.ipv4ll);
+ nm_utils_strbuf_append(
+ &s,
+ &l,
+ ", ipv4ll=" NM_HASH_OBFUSCATE_PTR_FMT "%s%s, state=%s",
+ NM_HASH_OBFUSCATE_PTR(notify_data->ipv4ll_event.ipv4ll),
+ NM_PRINT_FMT_QUOTED2(addr4 != 0, ", addr=", _nm_utils_inet4_ntop(addr4, sbuf_addr), ""),
+ nm_l3_ipv4ll_state_to_string(nm_l3_ipv4ll_get_state(notify_data->ipv4ll_event.ipv4ll),
+ sbuf100,
+ sizeof(sbuf100)));
+ break;
default:
break;
}
@@ -365,8 +427,9 @@ _nm_l3cfg_emit_signal_notify_simple(NML3Cfg *self, NML3ConfigNotifyType notify_t
static void
_l3_changed_configs_set_dirty(NML3Cfg *self)
{
- _LOGT("configuration changed");
- self->priv.changed_configs = TRUE;
+ _LOGT("IP configuration changed (mark dirty)");
+ self->priv.p->changed_configs_configs = TRUE;
+ self->priv.p->changed_configs_acd_state = TRUE;
}
/*****************************************************************************/
@@ -386,7 +449,11 @@ _l3_acd_ipv4_addresses_on_link_update(NML3Cfg * self,
else
self->priv.p->acd_ipv4_addresses_on_link_has = FALSE;
if (acd_data)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED, NULL);
+ _l3_acd_data_state_change(self,
+ acd_data,
+ ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED,
+ NULL,
+ NULL);
return;
}
@@ -396,8 +463,13 @@ _l3_acd_ipv4_addresses_on_link_update(NML3Cfg * self,
* cached addresses, and fetch them new the next time we need the information. */
nm_clear_pointer(&self->priv.p->acd_ipv4_addresses_on_link, g_hash_table_unref);
self->priv.p->acd_ipv4_addresses_on_link_has = FALSE;
- if (acd_data)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED, NULL);
+ if (acd_data) {
+ _l3_acd_data_state_change(self,
+ acd_data,
+ ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED,
+ NULL,
+ NULL);
+ }
}
static gboolean
@@ -499,15 +571,15 @@ _l3cfg_externally_removed_objs_drop_unused(NML3Cfg *self)
g_hash_table_iter_init(&h_iter, self->priv.p->externally_removed_objs_hash);
while (g_hash_table_iter_next(&h_iter, (gpointer *) &obj, NULL)) {
- if (!nm_l3_config_data_lookup_route_obj(self->priv.p->combined_l3cd_commited, obj)) {
+ if (!nm_l3_config_data_lookup_obj(self->priv.p->combined_l3cd_commited, obj)) {
/* The object is no longer tracked in the configuration.
* The externally_removed_objs_hash is to prevent adding entires that were
* removed externally, so if we don't plan to add the entry, we no longer need to track
* it. */
- (*(_l3cfg_externally_removed_objs_counter(self, NMP_OBJECT_GET_TYPE(obj))))--;
- g_hash_table_iter_remove(&h_iter);
_LOGD("externally-removed: untrack %s",
nmp_object_to_string(obj, NMP_OBJECT_TO_STRING_PUBLIC, sbuf, sizeof(sbuf)));
+ (*(_l3cfg_externally_removed_objs_counter(self, NMP_OBJECT_GET_TYPE(obj))))--;
+ g_hash_table_iter_remove(&h_iter);
}
}
}
@@ -525,10 +597,17 @@ _l3cfg_externally_removed_objs_track(NML3Cfg *self, const NMPObject *obj, gboole
if (!is_removed) {
/* the object is still (or again) present. It no longer gets hidden. */
if (self->priv.p->externally_removed_objs_hash) {
- if (g_hash_table_remove(self->priv.p->externally_removed_objs_hash, obj)) {
- (*(_l3cfg_externally_removed_objs_counter(self, NMP_OBJECT_GET_TYPE(obj))))--;
+ const NMPObject *obj2;
+ gpointer x_val;
+
+ if (g_hash_table_steal_extended(self->priv.p->externally_removed_objs_hash,
+ obj,
+ (gpointer *) &obj2,
+ &x_val)) {
+ (*(_l3cfg_externally_removed_objs_counter(self, NMP_OBJECT_GET_TYPE(obj2))))--;
_LOGD("externally-removed: untrack %s",
- nmp_object_to_string(obj, NMP_OBJECT_TO_STRING_PUBLIC, sbuf, sizeof(sbuf)));
+ nmp_object_to_string(obj2, NMP_OBJECT_TO_STRING_PUBLIC, sbuf, sizeof(sbuf)));
+ nmp_object_unref(obj2);
}
}
return;
@@ -558,26 +637,24 @@ _l3cfg_externally_removed_objs_track(NML3Cfg *self, const NMPObject *obj, gboole
static void
_l3cfg_externally_removed_objs_pickup(NML3Cfg *self, int addr_family)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
NMDedupMultiIter iter;
const NMPObject *obj;
if (!self->priv.p->combined_l3cd_commited)
return;
- nm_l3_config_data_iter_obj_for_each(&iter,
- self->priv.p->combined_l3cd_commited,
- &obj,
- NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ self->priv.p->combined_l3cd_commited,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)) {
if (!nm_platform_lookup_entry(self->priv.platform, NMP_CACHE_ID_TYPE_OBJECT_TYPE, obj))
_l3cfg_externally_removed_objs_track(self, obj, TRUE);
}
- nm_l3_config_data_iter_obj_for_each(&iter,
- self->priv.p->combined_l3cd_commited,
- &obj,
- NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4))
- {
+ nm_l3_config_data_iter_obj_for_each (&iter,
+ self->priv.p->combined_l3cd_commited,
+ &obj,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)) {
if (!nm_platform_lookup_entry(self->priv.platform, NMP_CACHE_ID_TYPE_OBJECT_TYPE, obj))
_l3cfg_externally_removed_objs_track(self, obj, TRUE);
}
@@ -590,7 +667,11 @@ _l3cfg_externally_removed_objs_filter(/* const NMDedupMultiObj * */ gconstpointe
const NMPObject *obj = o;
GHashTable * externally_removed_objs_hash = user_data;
- return !g_hash_table_contains(externally_removed_objs_hash, obj);
+ if (NMP_OBJECT_GET_TYPE(obj) == NMP_OBJECT_TYPE_IP4_ADDRESS
+ && NMP_OBJECT_CAST_IP4_ADDRESS(obj)->ip4acd_not_ready)
+ return FALSE;
+
+ return !nm_g_hash_table_contains(externally_removed_objs_hash, obj);
}
/*****************************************************************************/
@@ -664,9 +745,16 @@ _load_link(NML3Cfg *self, gboolean initial)
_l3_acd_nacd_instance_reset(self, NM_TERNARY_FALSE, TRUE);
} else if (nacd_link_now_up) {
if (!c_list_is_empty(&self->priv.p->acd_lst_head)) {
+ gint64 now_msec = 0;
+
_LOGT("acd: link up requires are re-initialize of ACD probes");
- c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_LINK_NOW_UP, NULL);
+ c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst) {
+ _l3_acd_data_state_change(self,
+ acd_data,
+ ACD_STATE_CHANGE_MODE_LINK_NOW_UP,
+ NULL,
+ &now_msec);
+ }
}
}
}
@@ -687,7 +775,7 @@ _nm_l3cfg_notify_platform_change_on_idle(NML3Cfg *self, guint32 obj_type_flags)
};
_nm_l3cfg_emit_signal_notify(self, &notify_data);
- _l3_acd_data_notify_acd_completed_all(self);
+ _nm_l3cfg_emit_signal_notify_acd_event_all(self);
if (NM_FLAGS_ANY(obj_type_flags, nmp_object_type_to_flags(NMP_OBJECT_TYPE_IP4_ROUTE)))
_property_emit_notify(self, NM_L3CFG_PROPERTY_EMIT_TYPE_IP4_ROUTE);
@@ -891,84 +979,77 @@ nm_l3cfg_get_acd_is_pending(NML3Cfg *self)
}
static gboolean
-_acd_track_data_is_not_dirty(const AcdTrackData *acd_track)
+_acd_track_data_is_not_dirty(const NML3AcdAddrTrackInfo *acd_track)
{
- return acd_track && !acd_track->acd_dirty;
+ return acd_track && !acd_track->_priv.acd_dirty_track;
}
static void
-_acd_track_data_free(AcdTrackData *acd_track)
+_acd_track_data_clear(NML3AcdAddrTrackInfo *acd_track)
{
- c_list_unlink_stale(&acd_track->acd_track_lst);
nm_l3_config_data_unref(acd_track->l3cd);
nmp_object_unref(acd_track->obj);
- nm_g_slice_free(acd_track);
}
static void
_acd_data_free(AcdData *acd_data)
{
- nm_assert(c_list_is_empty(&acd_data->acd_track_lst_head));
+ nm_assert(acd_data->info.n_track_infos == 0u);
n_acd_probe_free(acd_data->nacd_probe);
- nm_clear_g_source_inst(&acd_data->acd_timeout_source);
+ nm_clear_g_source_inst(&acd_data->acd_data_timeout_source);
c_list_unlink_stale(&acd_data->acd_lst);
+ c_list_unlink_stale(&acd_data->acd_event_notify_lst);
+ g_free((NML3AcdAddrTrackInfo *) acd_data->info.track_infos);
nm_g_slice_free(acd_data);
}
-static gboolean
-_acd_data_probe_result_is_good(const AcdData *acd_data)
-{
- nm_assert(acd_data);
-
- if (acd_data->acd_state < ACD_STATE_PROBE_DONE) {
- /* we are currently probing. Wait. */
- return FALSE;
- }
-
- /* Probing is already completed. Use the probe result. */
- return acd_data->probe_result;
-}
-
static guint
-_acd_data_collect_tracks_data(const AcdData *acd_data,
- NMTernary dirty_selector,
- NMTernary acd_failed_notified_selector,
- guint32 * out_best_acd_timeout_msec)
-{
- guint32 best_acd_timeout_msec = G_MAXUINT32;
- AcdTrackData *acd_track;
- guint n = 0;
+_acd_data_collect_tracks_data(const AcdData * acd_data,
+ NMTernary dirty_selector,
+ guint32 * out_best_acd_timeout_msec,
+ NML3AcdDefendType *out_best_acd_defend_type)
+{
+ NML3AcdDefendType best_acd_defend_type = NM_L3_ACD_DEFEND_TYPE_NONE;
+ guint32 best_acd_timeout_msec = G_MAXUINT32;
+ guint n = 0;
+ guint i;
+
+ for (i = 0; i < acd_data->info.n_track_infos; i++) {
+ const NML3AcdAddrTrackInfo *acd_track = &acd_data->info.track_infos[i];
- c_list_for_each_entry (acd_track, &acd_data->acd_track_lst_head, acd_track_lst) {
if (dirty_selector != NM_TERNARY_DEFAULT) {
- if ((!!dirty_selector) != (!!acd_track->acd_dirty))
- continue;
- }
- if (acd_failed_notified_selector != NM_TERNARY_DEFAULT) {
- if ((!!acd_failed_notified_selector) != (!!acd_track->acd_failed_notified))
+ if ((!!dirty_selector) != (!!acd_track->_priv.acd_dirty_track))
continue;
}
n++;
- if (best_acd_timeout_msec > acd_track->acd_timeout_msec)
- best_acd_timeout_msec = acd_track->acd_timeout_msec;
+ if (best_acd_timeout_msec > acd_track->_priv.acd_timeout_msec_track)
+ best_acd_timeout_msec = acd_track->_priv.acd_timeout_msec_track;
+ if (best_acd_defend_type < acd_track->_priv.acd_defend_type_track)
+ best_acd_defend_type = acd_track->_priv.acd_defend_type_track;
}
+ nm_assert(n == 0 || best_acd_defend_type > NM_L3_ACD_DEFEND_TYPE_NONE);
+ nm_assert(best_acd_defend_type <= NM_L3_ACD_DEFEND_TYPE_ALWAYS);
+
NM_SET_OUT(out_best_acd_timeout_msec, n > 0 ? best_acd_timeout_msec : 0u);
+ NM_SET_OUT(out_best_acd_defend_type, best_acd_defend_type);
return n;
}
-static AcdTrackData *
+static NML3AcdAddrTrackInfo *
_acd_data_find_track(const AcdData * acd_data,
const NML3ConfigData *l3cd,
const NMPObject * obj,
gconstpointer tag)
{
- AcdTrackData *acd_track;
+ guint i;
+
+ for (i = 0; i < acd_data->info.n_track_infos; i++) {
+ const NML3AcdAddrTrackInfo *acd_track = &acd_data->info.track_infos[i];
- c_list_for_each_entry (acd_track, &acd_data->acd_track_lst_head, acd_track_lst) {
if (acd_track->obj == obj && acd_track->l3cd == l3cd && acd_track->tag == tag)
- return acd_track;
+ return (NML3AcdAddrTrackInfo *) acd_track;
}
return NULL;
@@ -993,7 +1074,7 @@ _acd_has_valid_link(const NMPObject *obj,
link = NMP_OBJECT_CAST_LINK(obj);
addr_bin = nmp_link_address_get(&link->l_address, &addr_len);
- if (!addr_bin || addr_len != ACD_SUPPORTED_ETH_ALEN) {
+ if (addr_len != ACD_SUPPORTED_ETH_ALEN) {
NM_SET_OUT(out_acd_not_supported, TRUE);
return FALSE;
}
@@ -1004,6 +1085,21 @@ _acd_has_valid_link(const NMPObject *obj,
}
static gboolean
+_l3_acd_nacd_event_down_timeout_cb(gpointer user_data)
+{
+ NML3Cfg *self = user_data;
+ AcdData *acd_data;
+ gint64 now_msec = 0;
+
+ _LOGT("acd: message possibly dropped due to device down (handle events)");
+ nm_clear_g_source_inst(&self->priv.p->nacd_event_down_source);
+ c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst)
+ _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_NACD_DOWN, NULL, &now_msec);
+ _nm_l3cfg_emit_signal_notify_acd_event_all(self);
+ return G_SOURCE_REMOVE;
+}
+
+static gboolean
_l3_acd_nacd_event(int fd, GIOCondition condition, gpointer user_data)
{
NML3Cfg *self = user_data;
@@ -1020,8 +1116,10 @@ _l3_acd_nacd_event(int fd, GIOCondition condition, gpointer user_data)
}
while (TRUE) {
- AcdData * acd_data;
- NAcdEvent *event;
+ NMEtherAddr sender_addr_data;
+ const NMEtherAddr *sender_addr;
+ AcdData * acd_data;
+ NAcdEvent * event;
r = n_acd_pop_event(self->priv.p->nacd, &event);
if (r) {
@@ -1033,77 +1131,83 @@ _l3_acd_nacd_event(int fd, GIOCondition condition, gpointer user_data)
goto out;
}
-#define _acd_event_payload used
- G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NAcdEvent, _acd_event_payload)
- == G_STRUCT_OFFSET(NAcdEvent, defended));
- G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NAcdEvent, _acd_event_payload)
- == G_STRUCT_OFFSET(NAcdEvent, conflict));
- G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(NAcdEvent, _acd_event_payload)
- == G_STRUCT_OFFSET(NAcdEvent, used));
- nm_assert(&event->_acd_event_payload == &event->defended);
- nm_assert(&event->_acd_event_payload == &event->conflict);
- nm_assert(&event->_acd_event_payload == &event->used);
-
switch (event->event) {
case N_ACD_EVENT_READY:
- n_acd_probe_get_userdata(event->_acd_event_payload.probe, (void **) &acd_data);
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_NACD_READY, event);
+ n_acd_probe_get_userdata(event->ready.probe, (void **) &acd_data);
+ _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_NACD_READY, NULL, NULL);
break;
case N_ACD_EVENT_USED:
- n_acd_probe_get_userdata(event->_acd_event_payload.probe, (void **) &acd_data);
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_NACD_USED, event);
- break;
case N_ACD_EVENT_DEFENDED:
case N_ACD_EVENT_CONFLICT:
{
- gs_free char *sender_str = NULL;
- const char * addr_str = NULL;
- char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
-
- /* since we announce with N_ACD_DEFEND_ALWAYS, we don't actually expect any
- * conflict reported and don't handle it. It would be complicated to de-configure
- * the address. */
- nm_assert(event->event == N_ACD_EVENT_DEFENDED);
-
- n_acd_probe_get_userdata(event->_acd_event_payload.probe, (void **) &acd_data);
- _LOGT_acd(acd_data,
- "address %s %s from %s",
- (addr_str = _nm_utils_inet4_ntop(acd_data->addr, sbuf_addr)),
- event->event == N_ACD_EVENT_DEFENDED ? "defended" : "conflict detected",
- (sender_str = nm_utils_bin2hexstr_full(event->_acd_event_payload.sender,
- event->_acd_event_payload.n_sender,
- ':',
- FALSE,
- NULL)));
- if (event->event == N_ACD_EVENT_CONFLICT) {
- _LOGW("IPv4 address collision detection sees conflict on interface %i%s%s%s for "
- "address %s from host %s",
- self->priv.ifindex,
- NM_PRINT_FMT_QUOTED(self->priv.plobj,
- " (",
- NMP_OBJECT_CAST_LINK(self->priv.plobj)->name,
- ")",
- ""),
- addr_str ?: _nm_utils_inet4_ntop(acd_data->addr, sbuf_addr),
- sender_str
- ?: (sender_str =
- nm_utils_bin2hexstr_full(event->_acd_event_payload.sender,
- event->_acd_event_payload.n_sender,
- ':',
- FALSE,
- NULL)));
+#define _acd_event_payload_with_sender(event) \
+ ({ \
+ NAcdEvent *_event = (event); \
+ \
+ nm_assert(event); \
+ nm_assert(NM_IN_SET(event->event, \
+ N_ACD_EVENT_USED, \
+ N_ACD_EVENT_DEFENDED, \
+ N_ACD_EVENT_CONFLICT)); \
+ nm_assert(&_event->used == &_event->defended); \
+ nm_assert(&_event->used == &_event->conflict); \
+ &_event->used; \
+ })
+
+ n_acd_probe_get_userdata(_acd_event_payload_with_sender(event)->probe,
+ (void **) &acd_data);
+
+ if (_acd_event_payload_with_sender(event)->n_sender == ETH_ALEN) {
+ G_STATIC_ASSERT_EXPR(_nm_alignof(NMEtherAddr) == 1);
+ nm_assert(_acd_event_payload_with_sender(event)->sender);
+ memcpy(&sender_addr_data, _acd_event_payload_with_sender(event)->sender, ETH_ALEN);
+ sender_addr = &sender_addr_data;
+ } else {
+ nm_assert_not_reached();
+ sender_addr = &nm_ether_addr_zero;
}
+
+ _l3_acd_data_state_change(self,
+ acd_data,
+ (AcdStateChangeMode) event->event,
+ sender_addr,
+ NULL);
break;
}
case N_ACD_EVENT_DOWN:
- _LOGT("acd: message possibly dropped due to device down.");
- c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_NACD_DOWN, NULL);
+ if (!self->priv.p->nacd_event_down_source) {
+ gint64 now_msec;
+ guint32 timeout_msec;
+
+ now_msec = nm_utils_get_monotonic_timestamp_msec();
+ if (self->priv.p->nacd_event_down_ratelimited_until_msec > 0
+ && now_msec < self->priv.p->nacd_event_down_ratelimited_until_msec)
+ timeout_msec = self->priv.p->nacd_event_down_ratelimited_until_msec - now_msec;
+ else {
+ timeout_msec = 0;
+ self->priv.p->nacd_event_down_ratelimited_until_msec = now_msec + 2000;
+ }
+ _LOGT("acd: message possibly dropped due to device down (schedule handling event "
+ "in %u msec)",
+ timeout_msec);
+ self->priv.p->nacd_event_down_source =
+ nm_g_timeout_source_new(timeout_msec,
+ G_PRIORITY_DEFAULT,
+ _l3_acd_nacd_event_down_timeout_cb,
+ self,
+ NULL);
+ g_source_attach(self->priv.p->nacd_event_down_source, NULL);
+ }
break;
default:
- _LOGT("acd: unexpected event %u. Ignore", event->event);
+ _LOGE("acd: unexpected event %u. Ignore", event->event);
+ nm_assert_not_reached();
break;
}
+
+ /* We are on an idle handler, and the n-acd events are expected to be independent. So, after
+ * each event emit all queued AcdEvent signals. */
+ _nm_l3cfg_emit_signal_notify_acd_event_all(self);
}
nm_assert_not_reached();
@@ -1115,8 +1219,6 @@ out:
_l3_acd_nacd_instance_reset(self, NM_TERNARY_TRUE, TRUE);
}
- _l3_acd_data_notify_acd_completed_all(self);
-
return G_SOURCE_CONTINUE;
}
@@ -1167,9 +1269,15 @@ _l3_acd_nacd_instance_reset(NML3Cfg *self, NMTernary start_timer, gboolean acd_d
if (acd_data_notify) {
AcdData *acd_data;
-
- c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_INSTANCE_RESET, NULL);
+ gint64 now_msec = 0;
+
+ c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst) {
+ _l3_acd_data_state_change(self,
+ acd_data,
+ ACD_STATE_CHANGE_MODE_INSTANCE_RESET,
+ NULL,
+ &now_msec);
+ }
}
}
@@ -1275,30 +1383,37 @@ _l3_acd_nacd_instance_create_probe(NML3Cfg * self,
}
static void
-_l3_acd_data_free_trackers(NML3Cfg *self, AcdData *acd_data, gboolean all /* or only dirty */)
+_l3_acd_data_prune_one(NML3Cfg *self, AcdData *acd_data, gboolean all /* or only dirty */)
{
- AcdTrackData *acd_track;
- AcdTrackData *acd_track_safe;
+ NML3AcdAddrTrackInfo *acd_tracks;
+ guint i;
+ guint j;
+
+ acd_tracks = (NML3AcdAddrTrackInfo *) acd_data->info.track_infos;
+ j = 0;
+ for (i = 0; i < acd_data->info.n_track_infos; i++) {
+ NML3AcdAddrTrackInfo *acd_track = &acd_tracks[i];
- c_list_for_each_entry_safe (acd_track,
- acd_track_safe,
- &acd_data->acd_track_lst_head,
- acd_track_lst) {
/* If not "all" is requested, we only delete the dirty ones
* (and mark the survivors as dirty right away). */
- if (!all && !acd_track->acd_dirty) {
- acd_track->acd_dirty = TRUE;
+ if (!all && !acd_track->_priv.acd_dirty_track) {
+ acd_track->_priv.acd_dirty_track = TRUE;
+ if (j != i)
+ acd_tracks[j] = *acd_track;
+ j++;
continue;
}
_LOGT_acd(acd_data, "untrack " ACD_TRACK_FMT "", ACD_TRACK_PTR(acd_track));
- _acd_track_data_free(acd_track);
+ _acd_track_data_clear(acd_track);
}
- if (!c_list_is_empty(&acd_data->acd_track_lst_head))
+ acd_data->info.n_track_infos = j;
+ if (j > 0)
return;
+ _LOGT_acd(acd_data, "removed");
if (!g_hash_table_remove(self->priv.p->acd_lst_hash, acd_data))
nm_assert_not_reached();
_acd_data_free(acd_data);
@@ -1311,7 +1426,7 @@ _l3_acd_data_prune(NML3Cfg *self, gboolean all /* or only dirty */)
AcdData *acd_data;
c_list_for_each_entry_safe (acd_data, acd_data_safe, &self->priv.p->acd_lst_head, acd_lst)
- _l3_acd_data_free_trackers(self, acd_data, all);
+ _l3_acd_data_prune_one(self, acd_data, all);
}
static AcdData *
@@ -1320,17 +1435,33 @@ _l3_acd_data_find(NML3Cfg *self, in_addr_t addr)
return nm_g_hash_table_lookup(self->priv.p->acd_lst_hash, &addr);
}
+static gboolean
+_l3_acd_data_defendconflict_warning_ratelimited(AcdData *acd_data, gint64 *p_now_msec)
+{
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
+
+ if (acd_data->last_defendconflict_timestamp_msec == 0
+ || acd_data->last_defendconflict_timestamp_msec
+ > *p_now_msec - ACD_DEFENDCONFLICT_INFO_RATELIMIT_MSEC) {
+ acd_data->last_defendconflict_timestamp_msec = *p_now_msec;
+ return FALSE;
+ }
+ return TRUE;
+}
+
static void
_l3_acd_data_add(NML3Cfg * self,
const NML3ConfigData *l3cd,
const NMPObject * obj,
gconstpointer tag,
+ NML3AcdDefendType acd_defend_type,
guint32 acd_timeout_msec)
{
- in_addr_t addr = NMP_OBJECT_CAST_IP4_ADDRESS(obj)->address;
- AcdTrackData *acd_track;
- AcdData * acd_data;
- const char * track_mode;
+ in_addr_t addr = NMP_OBJECT_CAST_IP4_ADDRESS(obj)->address;
+ NML3AcdAddrTrackInfo *acd_track;
+ AcdData * acd_data;
+ const char * track_mode;
+ char sbuf100[100];
if (ACD_ADDR_SKIP(addr))
return;
@@ -1345,64 +1476,93 @@ _l3_acd_data_add(NML3Cfg * self,
if (!acd_data) {
if (G_UNLIKELY(!self->priv.p->acd_lst_hash)) {
- G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(AcdData, addr) == 0);
+ G_STATIC_ASSERT_EXPR(G_STRUCT_OFFSET(AcdData, info.addr) == 0);
self->priv.p->acd_lst_hash = g_hash_table_new(nm_puint32_hash, nm_puint32_equals);
}
acd_data = g_slice_new(AcdData);
*acd_data = (AcdData){
- .self = self,
- .addr = addr,
- .acd_track_lst_head = C_LIST_INIT(acd_data->acd_track_lst_head),
- .acd_notify_complete_lst = C_LIST_INIT(acd_data->acd_notify_complete_lst),
- .acd_state = ACD_STATE_INIT,
- .probing_timestamp_msec = 0,
- .probe_result = FALSE,
- .initializing = TRUE,
+ .info =
+ {
+ .l3cfg = self,
+ .addr = addr,
+ .state = NM_L3_ACD_ADDR_STATE_INIT,
+ .n_track_infos = 0,
+ .track_infos = NULL,
+ },
+ .n_track_infos_alloc = 0,
+ .acd_event_notify_lst = C_LIST_INIT(acd_data->acd_event_notify_lst),
+ .probing_timestamp_msec = 0,
+ .acd_defend_type_desired = NM_L3_ACD_DEFEND_TYPE_NONE,
+ .acd_defend_type_current = NM_L3_ACD_DEFEND_TYPE_NONE,
+ .acd_defend_type_is_active = FALSE,
};
c_list_link_tail(&self->priv.p->acd_lst_head, &acd_data->acd_lst);
if (!g_hash_table_add(self->priv.p->acd_lst_hash, acd_data))
nm_assert_not_reached();
acd_track = NULL;
- } else {
+ } else
acd_track = _acd_data_find_track(acd_data, l3cd, obj, tag);
- }
if (!acd_track) {
- acd_track = g_slice_new(AcdTrackData);
- *acd_track = (AcdTrackData){
- .l3cd = nm_l3_config_data_ref(l3cd),
- .obj = nmp_object_ref(obj),
- .tag = tag,
- .acd_dirty = FALSE,
- .acd_timeout_msec = acd_timeout_msec,
+ if (acd_data->info.n_track_infos >= acd_data->n_track_infos_alloc) {
+ acd_data->n_track_infos_alloc = NM_MAX(2u, acd_data->n_track_infos_alloc * 2u);
+ acd_data->info.track_infos =
+ g_realloc((gpointer) acd_data->info.track_infos,
+ acd_data->n_track_infos_alloc * sizeof(acd_data->info.track_infos[0]));
+ }
+ acd_track =
+ (NML3AcdAddrTrackInfo *) &acd_data->info.track_infos[acd_data->info.n_track_infos++];
+ *acd_track = (NML3AcdAddrTrackInfo){
+ .l3cd = nm_l3_config_data_ref(l3cd),
+ .obj = nmp_object_ref(obj),
+ .tag = tag,
+ ._priv.acd_dirty_track = FALSE,
+ ._priv.acd_defend_type_track = acd_defend_type,
+ ._priv.acd_timeout_msec_track = acd_timeout_msec,
};
- c_list_link_tail(&acd_data->acd_track_lst_head, &acd_track->acd_track_lst);
track_mode = "new";
} else {
- nm_assert(acd_track->acd_dirty);
- acd_track->acd_dirty = FALSE;
- if (acd_track->acd_timeout_msec != acd_timeout_msec) {
- acd_track->acd_timeout_msec = acd_timeout_msec;
- track_mode = "update";
+ nm_assert(acd_track->_priv.acd_dirty_track);
+ acd_track->_priv.acd_dirty_track = FALSE;
+ if (acd_track->_priv.acd_timeout_msec_track != acd_timeout_msec
+ || acd_track->_priv.acd_defend_type_track != acd_defend_type) {
+ acd_track->_priv.acd_defend_type_track = acd_defend_type;
+ acd_track->_priv.acd_timeout_msec_track = acd_timeout_msec;
+ track_mode = "update";
} else
- track_mode = NULL;
+ return;
}
- if (track_mode) {
- _LOGT_acd(acd_data,
- "track " ACD_TRACK_FMT " with timeout %u msec (%s)",
- ACD_TRACK_PTR(acd_track),
- acd_timeout_msec,
- track_mode);
- }
+ acd_data->track_infos_changed = TRUE;
+ _LOGT_acd(acd_data,
+ "track " ACD_TRACK_FMT " with timeout %u msec, defend=%s (%s)",
+ ACD_TRACK_PTR(acd_track),
+ acd_timeout_msec,
+ _l3_acd_defend_type_to_string(acd_track->_priv.acd_defend_type_track,
+ sbuf100,
+ sizeof(sbuf100)),
+ track_mode);
}
static void
-_l3_acd_data_add_all(NML3Cfg *self, const L3ConfigData *const *infos, guint infos_len)
+_l3_acd_data_add_all(NML3Cfg * self,
+ const L3ConfigData *const *infos,
+ guint infos_len,
+ gboolean reapply)
{
AcdData *acd_data;
guint i_info;
+ gint64 now_msec = 0;
+ guint i;
+
+ if (NM_MORE_ASSERTS > 5) {
+ c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst) {
+ nm_assert(acd_data->info.n_track_infos > 0u);
+ for (i = 0; i < acd_data->info.n_track_infos; i++)
+ nm_assert(acd_data->info.track_infos[i]._priv.acd_dirty_track);
+ }
+ }
/* First we add/track all the relevant addresses for ACD. */
for (i_info = 0; i_info < infos_len; i_info++) {
@@ -1410,63 +1570,54 @@ _l3_acd_data_add_all(NML3Cfg *self, const L3ConfigData *const *infos, guint info
NMDedupMultiIter iter;
const NMPObject * obj;
- nm_l3_config_data_iter_obj_for_each(&iter, info->l3cd, &obj, NMP_OBJECT_TYPE_IP4_ADDRESS)
- _l3_acd_data_add(self, info->l3cd, obj, info->tag, info->acd_timeout_msec);
+ nm_l3_config_data_iter_obj_for_each (&iter, info->l3cd, &obj, NMP_OBJECT_TYPE_IP4_ADDRESS) {
+ _l3_acd_data_add(self,
+ info->l3cd,
+ obj,
+ info->tag_confdata,
+ info->acd_defend_type_confdata,
+ info->acd_timeout_msec_confdata);
+ }
}
/* Then we do a pre-flight check, whether some of the acd_data entries can already
* move forward to automatically pass ACD. That is the case if acd_timeout_msec
* is zero (to disable ACD) or if the address is already configured on the
* interface. */
- c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst)
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_INIT, NULL);
+ c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst) {
+ _l3_acd_data_state_change(self,
+ acd_data,
+ reapply ? ACD_STATE_CHANGE_MODE_INIT_REAPPLY
+ : ACD_STATE_CHANGE_MODE_INIT,
+ NULL,
+ &now_msec);
+ }
}
static gboolean
_l3_acd_data_timeout_cb(gpointer user_data)
{
AcdData *acd_data = user_data;
- NML3Cfg *self = acd_data->self;
+ NML3Cfg *self = acd_data->info.l3cfg;
nm_assert(NM_IS_L3CFG(self));
- nm_clear_g_source_inst(&acd_data->acd_timeout_source);
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_TIMEOUT, NULL);
+ nm_clear_g_source_inst(&acd_data->acd_data_timeout_source);
+ _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_TIMEOUT, NULL, NULL);
return G_SOURCE_REMOVE;
}
static void
-_l3_acd_data_timeout_schedule(AcdData *acd_data,
- gint64 now_msec,
- gint64 expiry_msec,
- gboolean msec_granularity)
+_l3_acd_data_timeout_schedule(AcdData *acd_data, gint64 timeout_msec)
{
- nm_assert(expiry_msec > 0);
- nm_assert(now_msec > 0);
-
- if (acd_data->acd_timeout_source && acd_data->acd_timeout_expiry_msec == expiry_msec)
- return;
-
- nm_clear_g_source_inst(&acd_data->acd_timeout_source);
-
- acd_data->acd_timeout_expiry_msec = expiry_msec;
-
- if (msec_granularity) {
- acd_data->acd_timeout_source = nm_g_timeout_source_new(NM_MAX(0, expiry_msec - now_msec),
- G_PRIORITY_DEFAULT,
- _l3_acd_data_timeout_cb,
- acd_data,
- NULL);
- } else {
- acd_data->acd_timeout_source =
- nm_g_timeout_source_new_seconds((NM_MAX(0, expiry_msec - now_msec) + 999) / 1000,
- G_PRIORITY_DEFAULT,
- _l3_acd_data_timeout_cb,
- acd_data,
- NULL);
- }
-
- g_source_attach(acd_data->acd_timeout_source, NULL);
+ nm_clear_g_source_inst(&acd_data->acd_data_timeout_source);
+ acd_data->acd_data_timeout_source =
+ nm_g_timeout_source_new(NM_CLAMP((gint64) 0, timeout_msec, (gint64) G_MAXUINT),
+ G_PRIORITY_DEFAULT,
+ _l3_acd_data_timeout_cb,
+ acd_data,
+ NULL);
+ g_source_attach(acd_data->acd_data_timeout_source, NULL);
}
static void
@@ -1477,7 +1628,7 @@ _l3_acd_data_timeout_schedule_probing_restart(AcdData *acd_data, gint64 now_msec
nm_assert(acd_data);
nm_assert(now_msec > 0);
- nm_assert(acd_data->acd_state == ACD_STATE_PROBING);
+ nm_assert(acd_data->info.state == NM_L3_ACD_ADDR_STATE_PROBING);
nm_assert(!acd_data->nacd_probe);
nm_assert(acd_data->probing_timeout_msec > 0);
nm_assert(acd_data->probing_timestamp_msec > 0);
@@ -1486,152 +1637,168 @@ _l3_acd_data_timeout_schedule_probing_restart(AcdData *acd_data, gint64 now_msec
timeout_msec = NM_MAX(0, expiry_msec - now_msec);
- if (timeout_msec > 1000) {
- /* we poll at least once per second to re-check the state. */
- timeout_msec = 1000;
+ if (timeout_msec > 1500) {
+ /* we poll at least every 1.5 seconds to re-check the state. */
+ timeout_msec = 1500;
}
- _l3_acd_data_timeout_schedule(acd_data, now_msec, now_msec + timeout_msec, TRUE);
+ _l3_acd_data_timeout_schedule(acd_data, timeout_msec);
}
static void
-_l3_acd_data_timeout_schedule_probing_full_restart(AcdData *acd_data, gint64 now_msec)
+_nm_l3cfg_emit_signal_notify_acd_event(NML3Cfg *self, AcdData *acd_data)
{
- nm_assert(acd_data);
- nm_assert(now_msec > 0);
- nm_assert(acd_data->acd_state == ACD_STATE_PROBE_DONE);
- nm_assert(!acd_data->probe_result);
-
- _l3_acd_data_timeout_schedule(acd_data,
- now_msec,
- now_msec + ACD_WAIT_TIME_PROBING_FULL_RESTART_MSEC,
- FALSE);
-}
+ gs_free NML3AcdAddrTrackInfo *track_infos_clone = NULL;
+ NML3ConfigNotifyData notify_data;
+ NML3AcdAddrInfo * info;
+ guint i;
-static void
-_l3_acd_data_timeout_schedule_announce_restart(AcdData *acd_data, gint64 now_msec)
-{
nm_assert(acd_data);
- nm_assert(now_msec > 0);
- nm_assert(acd_data->acd_state == ACD_STATE_PROBE_DONE);
- nm_assert(acd_data->probe_result);
-
- _l3_acd_data_timeout_schedule(acd_data,
- now_msec,
- now_msec + ACD_WAIT_TIME_ANNOUNCE_RESTART_MSEC,
- FALSE);
-}
+ nm_assert(acd_data->info.state > NM_L3_ACD_ADDR_STATE_INIT);
+ nm_assert(acd_data->info.n_track_infos > 0);
-static void
-_l3_acd_data_notify_acd_completed(NML3Cfg *self, AcdData *acd_data, gboolean force_all)
-{
- gs_free NML3ConfigNotifyPayloadAcdFailedSource *sources_free = NULL;
- NML3ConfigNotifyPayloadAcdFailedSource * sources = NULL;
- NML3ConfigNotifyData notify_data;
- AcdTrackData * acd_track;
- guint i, n;
- NMTernary acd_failed_notified_selector;
-
- nm_assert(NM_IS_L3CFG(self));
- nm_assert(acd_data);
- nm_assert(_acd_data_collect_tracks_data(acd_data, FALSE, NM_TERNARY_DEFAULT, NULL) == 0);
-
- acd_failed_notified_selector = force_all ? NM_TERNARY_DEFAULT : FALSE;
+ notify_data.notify_type = NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT;
+ notify_data.acd_event = (typeof(notify_data.acd_event)){
+ .info = acd_data->info,
+ };
- n = _acd_data_collect_tracks_data(acd_data,
- NM_TERNARY_DEFAULT,
- acd_failed_notified_selector,
- NULL);
+ /* we need to clone the track-data, because the callee is allowed to add/remove
+ * configs. This means, the event data is stale. If you need the current
+ * value, look it up with nm_l3cfg_get_acd_addr_info(). */
+ info = &notify_data.acd_event.info;
+ info->track_infos = nm_memdup_maybe_a(300,
+ info->track_infos,
+ info->n_track_infos * sizeof(info->track_infos[0]),
+ &track_infos_clone);
- if (n == 0)
- return;
+ for (i = 0; i < info->n_track_infos; i++) {
+ NML3AcdAddrTrackInfo *ti = (NML3AcdAddrTrackInfo *) &info->track_infos[i];
- if (!force_all) {
- _LOGT_acd(acd_data, "state: acd probe failed earlier. Emit notification for new trackers");
+ nmp_object_ref(ti->obj);
+ nm_l3_config_data_ref(ti->l3cd);
}
- if (n * sizeof(sources[0]) > 300) {
- sources_free = g_new(NML3ConfigNotifyPayloadAcdFailedSource, n);
- sources = sources_free;
- } else
- sources = g_newa(NML3ConfigNotifyPayloadAcdFailedSource, n);
-
- i = 0;
- c_list_for_each_entry (acd_track, &acd_data->acd_track_lst_head, acd_track_lst) {
- if (!force_all && acd_track->acd_failed_notified) {
- /* already notified before. Skip. */
- continue;
- }
- nm_assert(i < n);
- acd_track->acd_failed_notified = TRUE;
- sources[i++] = (NML3ConfigNotifyPayloadAcdFailedSource){
- .obj = nmp_object_ref(acd_track->obj),
- .l3cd = nm_l3_config_data_ref(acd_track->l3cd),
- .tag = acd_track->tag,
- };
- }
- nm_assert(i == n);
-
- notify_data.notify_type = NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED;
- notify_data.acd_completed = (typeof(notify_data.acd_completed)){
- .addr = acd_data->addr,
- .probe_result = acd_data->probe_result,
- .sources_len = n,
- .sources = sources,
- };
_nm_l3cfg_emit_signal_notify(self, &notify_data);
- for (i = 0; i < n; i++) {
- nmp_object_unref(sources[i].obj);
- nm_l3_config_data_unref(sources[i].l3cd);
+ for (i = 0; i < info->n_track_infos; i++) {
+ NML3AcdAddrTrackInfo *ti = (NML3AcdAddrTrackInfo *) &info->track_infos[i];
+
+ nmp_object_unref(ti->obj);
+ nm_l3_config_data_unref(ti->l3cd);
}
}
static void
-_l3_acd_data_notify_acd_completed_queue(NML3Cfg *self, AcdData *acd_data)
+_nm_l3cfg_emit_signal_notify_acd_event_queue(NML3Cfg *self, AcdData *acd_data)
{
- if (!c_list_is_empty(&acd_data->acd_notify_complete_lst)) {
- nm_assert(c_list_contains(&self->priv.p->acd_notify_complete_lst_head,
- &acd_data->acd_notify_complete_lst));
+ if (!c_list_is_empty(&acd_data->acd_event_notify_lst)) {
+ nm_assert(c_list_contains(&self->priv.p->acd_event_notify_lst_head,
+ &acd_data->acd_event_notify_lst));
return;
}
- c_list_link_tail(&self->priv.p->acd_notify_complete_lst_head,
- &acd_data->acd_notify_complete_lst);
+ c_list_link_tail(&self->priv.p->acd_event_notify_lst_head, &acd_data->acd_event_notify_lst);
}
static void
-_l3_acd_data_notify_acd_completed_all(NML3Cfg *self)
+_nm_l3cfg_emit_signal_notify_acd_event_all(NML3Cfg *self)
{
gs_unref_object NML3Cfg *self_keep_alive = NULL;
AcdData * acd_data;
- while ((acd_data = c_list_first_entry(&self->priv.p->acd_notify_complete_lst_head,
+ while ((acd_data = c_list_first_entry(&self->priv.p->acd_event_notify_lst_head,
AcdData,
- acd_notify_complete_lst))) {
+ acd_event_notify_lst))) {
if (!self_keep_alive)
self_keep_alive = g_object_ref(self);
- c_list_unlink(&acd_data->acd_notify_complete_lst);
- _l3_acd_data_notify_acd_completed(self, acd_data, TRUE);
+ c_list_unlink(&acd_data->acd_event_notify_lst);
+ _nm_l3cfg_emit_signal_notify_acd_event(self, acd_data);
}
}
+_nm_printf(5, 6) static void _l3_acd_data_state_set_full(NML3Cfg * self,
+ AcdData * acd_data,
+ NML3AcdAddrState state,
+ gboolean allow_commit,
+ const char * format,
+ ...)
+{
+ NML3AcdAddrState old_state;
+ gboolean changed;
+
+ if (acd_data->info.state == state)
+ return;
+
+ /* in every state we only have one timer possibly running. Resetting
+ * the states makes the previous timeout obsolete. */
+ nm_clear_g_source_inst(&acd_data->acd_data_timeout_source);
+
+ old_state = acd_data->info.state;
+ acd_data->info.state = state;
+ _nm_l3cfg_emit_signal_notify_acd_event_queue(self, acd_data);
+
+ if (state == NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED)
+ changed = FALSE;
+ else if (NM_IN_SET(old_state, NM_L3_ACD_ADDR_STATE_READY, NM_L3_ACD_ADDR_STATE_DEFENDING)
+ != NM_IN_SET(state, NM_L3_ACD_ADDR_STATE_READY, NM_L3_ACD_ADDR_STATE_DEFENDING))
+ changed = TRUE;
+ else
+ changed = FALSE;
+
+ if (format) {
+ gs_free char *msg = NULL;
+ va_list args;
+
+ va_start(args, format);
+ msg = g_strdup_vprintf(format, args);
+ va_end(args);
+
+ _LOGT_acd(acd_data, "set state to %s (%s)", _l3_acd_addr_state_to_string(state), msg);
+ } else
+ _LOGT_acd(acd_data, "set state to %s", _l3_acd_addr_state_to_string(state));
+
+ if (changed && allow_commit) {
+ /* The availability of an address just changed (and we are instructed to
+ * trigger a new commit). Do it. */
+ _l3_changed_configs_set_dirty(self);
+ nm_l3cfg_commit_on_idle_schedule(self);
+ }
+}
+
+static void
+_l3_acd_data_state_set(NML3Cfg * self,
+ AcdData * acd_data,
+ NML3AcdAddrState state,
+ gboolean allow_commit)
+{
+ _l3_acd_data_state_set_full(self, acd_data, state, allow_commit, NULL);
+}
+
static void
_l3_acd_data_state_change(NML3Cfg * self,
AcdData * acd_data,
AcdStateChangeMode state_change_mode,
- NAcdEvent * event)
+ const NMEtherAddr *sender_addr,
+ gint64 * p_now_msec)
+
{
- guint32 acd_timeout_msec;
- gint64 now_msec = 0;
- const char *log_reason;
- gboolean was_probing;
+ guint32 acd_timeout_msec;
+ NML3AcdDefendType acd_defend_type;
+ gint64 now_msec;
+ const char * log_reason;
+ char sbuf256[256];
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+
+ if (!p_now_msec) {
+ now_msec = 0;
+ p_now_msec = &now_msec;
+ }
/* Keeping track of ACD inevitably requires keeping (and mutating) state. Then a multitude of
* things can happen, and depending on the state, we need to do something.
*
* Here, all the state for one address that we probe/announce is tracked in AcdData/acd_data.
*
- * The acd_data has a list of AcdTrackData/acd_track_lst_head, which are configuration items
+ * The acd_data has a list of NML3AcdAddrTrackInfo/acd_track_lst_head, which are configuration items
* that are interested in configuring this address. The "owners" of the ACD check for a certain
* address.
*
@@ -1644,415 +1811,533 @@ _l3_acd_data_state_change(NML3Cfg * self,
nm_assert(NM_IS_L3CFG(self));
nm_assert(acd_data);
- nm_assert(!c_list_is_empty(&acd_data->acd_track_lst_head));
-
- was_probing = acd_data->acd_state < ACD_STATE_PROBE_DONE;
+ nm_assert(acd_data->info.n_track_infos);
+ nm_assert(NM_IN_SET(acd_data->info.state,
+ NM_L3_ACD_ADDR_STATE_CONFLICT,
+ NM_L3_ACD_ADDR_STATE_READY,
+ NM_L3_ACD_ADDR_STATE_DEFENDING,
+ NM_L3_ACD_ADDR_STATE_INIT,
+ NM_L3_ACD_ADDR_STATE_PROBING,
+ NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED,
+ NM_L3_ACD_ADDR_STATE_USED));
+ nm_assert(!acd_data->track_infos_changed
+ || NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_INIT,
+ ACD_STATE_CHANGE_MODE_INIT_REAPPLY,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT,
+ ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED,
+ ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED));
+ nm_assert((!!sender_addr)
+ == NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_NACD_USED,
+ ACD_STATE_CHANGE_MODE_NACD_CONFLICT,
+ ACD_STATE_CHANGE_MODE_NACD_DEFENDED));
+
+ if (acd_data->info.state == NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED) {
+ /* once remove, the state can only change by external added or during
+ * the POST-COMMIT check. */
+ if (!NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT,
+ ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED))
+ return;
+ }
switch (state_change_mode) {
case ACD_STATE_CHANGE_MODE_INIT:
- {
- AcdTrackData *acd_track;
- gboolean any_no_timeout;
-
- /* we are called from _l3_acd_data_add_all(), and we do a fast check whether
- * newly tracked entries already passed ACD so that we can use the address
- * right away. */
-
- if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->addr)) {
- /* the address is already configured on the link. It is an automatic pass. */
- if (_acd_data_collect_tracks_data(acd_data, FALSE, NM_TERNARY_DEFAULT, NULL) <= 0) {
- /* The entry has no non-dirty trackers, that means, it's no longer referenced
- * and will be removed during the next _l3_acd_data_prune(). We can ignore
- * this entry. */
+ case ACD_STATE_CHANGE_MODE_INIT_REAPPLY:
+
+ /* We are called right before commit. We check whether we have a acd_data
+ * in INIT or PROBING state. In that case, maybe the new configuration
+ * disables ACD, or we have the address already configured (which also let's
+ * us skip/cancel the probing). The point is that if the address would be ready
+ * already, we want to commit it right away. */
+
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ goto handle_init;
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ if (state_change_mode != ACD_STATE_CHANGE_MODE_INIT_REAPPLY)
return;
+ goto handle_init;
+ }
+ nm_assert_not_reached();
+ return;
+
+handle_init:
+ if (_acd_data_collect_tracks_data(acd_data,
+ NM_TERNARY_FALSE,
+ &acd_timeout_msec,
+ &acd_defend_type)
+ <= 0u) {
+ /* the acd_data has no active trackers. It will soon be pruned. */
+ return;
+ }
+
+ if (acd_timeout_msec == 0u)
+ log_reason = "acd disabled by configuration";
+ else if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->info.addr))
+ log_reason = "address already configured";
+ else {
+ if (state_change_mode == ACD_STATE_CHANGE_MODE_INIT_REAPPLY) {
+ /* during a reapply, we forget all the state and start from scratch. */
+ _LOGT_acd(acd_data, "reset state for reapply");
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ _l3_acd_data_state_set(self, acd_data, NM_L3_ACD_ADDR_STATE_INIT, FALSE);
}
- log_reason = "address initially already configured";
- goto handle_probing_acd_good;
+ return;
}
- /* we are called at the end of _l3_acd_data_add_all(). We updated the list of a
- * all tracked IP addresses before we actually collect the addresses that are
- * ready. We don't do regular handling of ACD states at this point, however,
- * we check whether ACD for new elements is disabled entirely, so we can signal
- * the address are ready right away (without going through another hop). */
+ _LOGT_acd(acd_data,
+ "%s probing (%s, during pre-check)",
+ acd_data->info.state == NM_L3_ACD_ADDR_STATE_INIT ? "skip" : "cancel",
+ log_reason);
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ acd_data->acd_defend_type_desired = acd_defend_type;
+ _l3_acd_data_state_set(self, acd_data, NM_L3_ACD_ADDR_STATE_READY, FALSE);
+ return;
- if (acd_data->acd_state != ACD_STATE_INIT) {
- /* this element is not new and we don't perform the quick-check. */
+ case ACD_STATE_CHANGE_MODE_POST_COMMIT:
+
+ if (acd_data->track_infos_changed) {
+ acd_data->track_infos_changed = FALSE;
+ _nm_l3cfg_emit_signal_notify_acd_event_queue(self, acd_data);
+ }
+
+ if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->info.addr)) {
+ log_reason = "address already configured";
+ goto handle_probing_done;
+ }
+
+ if (acd_data->info.state == NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED)
return;
+
+ /* we just did a commit of the IP configuration and now visit all ACD states
+ * and kick off the necessary actions... */
+ if (_acd_data_collect_tracks_data(acd_data,
+ NM_TERNARY_TRUE,
+ &acd_timeout_msec,
+ &acd_defend_type)
+ <= 0)
+ nm_assert_not_reached();
+
+ acd_data->acd_defend_type_desired = acd_defend_type;
+
+ if (acd_timeout_msec <= 0) {
+ log_reason = "acd disabled by configuration";
+ goto handle_probing_done;
}
- any_no_timeout = FALSE;
- c_list_for_each_entry (acd_track, &acd_data->acd_track_lst_head, acd_track_lst) {
- /* There should be no dirty trackers, because the element is in init-state. */
- nm_assert(!acd_track->acd_dirty);
- if (acd_track->acd_timeout_msec <= 0) {
- /* ACD for this element is disabled. We can process is right away. */
- any_no_timeout = TRUE;
- break;
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ nm_assert(!acd_data->nacd_probe);
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
+ acd_data->probing_timestamp_msec = (*p_now_msec);
+ acd_data->probing_timeout_msec = acd_timeout_msec;
+ _nm_l3cfg_emit_signal_notify_acd_event_queue(self, acd_data);
+ log_reason = "initial post-commit";
+ goto handle_start_probing;
+
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ {
+ gint64 old_expiry_msec;
+ gint64 new_expiry_msec;
+
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
+
+ new_expiry_msec = (*p_now_msec) + acd_timeout_msec;
+ old_expiry_msec = acd_data->probing_timestamp_msec + acd_data->probing_timeout_msec;
+
+ if (!acd_data->nacd_probe) {
+ /* we are currently waiting for restarting a probe. At this point, at most we have
+ * to adjust the timeout/timestamp and let the regular timeouts handle this. */
+
+ if (new_expiry_msec >= old_expiry_msec) {
+ /* the running timeout expires before the new timeout. We don't update the timestamp/timeout,
+ * because we don't want to prolong the overall probing time. */
+ return;
+ }
+ /* update the timers after out timeout got reduced. Also, reschedule the timeout
+ * so that it expires immediately. */
+ acd_data->probing_timestamp_msec = (*p_now_msec);
+ acd_data->probing_timeout_msec = acd_timeout_msec;
+ _l3_acd_data_timeout_schedule(acd_data, 0);
+ return;
+ }
+
+ if (new_expiry_msec >= old_expiry_msec) {
+ /* we already have ACD running with a timeout that expires before the requested one. There
+ * is nothing to do at this time. */
+ return;
}
+
+ /* the timeout got reduced. We try to restart the probe. */
+ acd_data->probing_timestamp_msec = (*p_now_msec);
+ acd_data->probing_timeout_msec = acd_timeout_msec;
+ log_reason = "post-commit timeout update";
+ goto handle_start_probing;
}
- if (!any_no_timeout) {
- /* there are elements that request the address, but they all specify
- * an ACD timeout. We cannot progress the state. */
+
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ /* we are done for now. We however scheduled a timeout to restart. This
+ * will be handled with the ACD_STATE_CHANGE_MODE_TIMEOUT event. */
return;
- }
- /* ACD is disabled, we can artificially moving the state further to
- * ACD_STATE_PROBE_DONE and configure the address right away. This avoids
- * that we go through another hop.
- */
- log_reason = "ACD disabled by configuration from the start";
- goto handle_probing_acd_good;
- }
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ goto handle_start_defending;
- case ACD_STATE_CHANGE_MODE_POST_COMMIT:
- acd_data->initializing = FALSE;
- goto handle_post_commit;
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ nm_assert_not_reached();
+ return;
+ }
+ nm_assert_not_reached();
+ return;
case ACD_STATE_CHANGE_MODE_TIMEOUT:
- {
- if (acd_data->acd_state == ACD_STATE_PROBING && !acd_data->nacd_probe) {
- const char *failure_reason;
- gboolean acd_not_supported;
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ nm_assert_not_reached();
+ return;
+
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ if (acd_data->nacd_probe) {
+ /* we are already probing. There is nothing to do for this timeout. */
+ return;
+ }
+
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
if (acd_data->probing_timestamp_msec + ACD_WAIT_PROBING_EXTRA_TIME_MSEC
+ ACD_WAIT_PROBING_EXTRA_TIME2_MSEC
- >= now_msec) {
+ >= (*p_now_msec)) {
+ /* hm. We failed to create a new probe too long. Something is really wrong
+ * internally, but let's ignore the issue and assume the address is good. What
+ * else would we do? Assume the address is USED? */
_LOGT_acd(acd_data,
- "state: probe-good (waiting for creating probe timed out. Assume good)");
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
+ "probe-good (waiting for creating probe timed out. Assume good)");
+ goto handle_start_defending;
}
- /* try create a new probe. The timeout is always as originally requested. */
- acd_data->nacd_probe =
- _l3_acd_nacd_instance_create_probe(self,
- acd_data->addr,
- acd_data->probing_timeout_msec,
- acd_data,
- &acd_not_supported,
- &failure_reason);
- if (acd_not_supported) {
- nm_assert(!acd_data->nacd_probe);
- _LOGT_acd(
- acd_data,
- "state: probe-good (interface does not support ACD anymore after timeout)");
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
+ log_reason = "retry probing on timeout";
+ goto handle_start_probing;
+
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+
+ nm_assert(!acd_data->nacd_probe);
+
+ /* after a timeout, re-probe the address. This only happens if the caller
+ * does not deconfigure the address after USED/CONFLICT. But in that case,
+ * we eventually want to retry. */
+ if (_acd_data_collect_tracks_data(acd_data,
+ NM_TERNARY_TRUE,
+ &acd_timeout_msec,
+ &acd_defend_type)
+ <= 0)
+ nm_assert_not_reached();
+
+ acd_data->acd_defend_type_desired = acd_defend_type;
+
+ if (acd_timeout_msec <= 0) {
+ log_reason = "acd disabled by configuration (restart after previous conflict)";
+ goto handle_probing_done;
}
- if (!acd_data->nacd_probe) {
- _LOGT_acd(acd_data,
- "state: probing not possible at this time (%s). Wait longer",
- failure_reason);
- _l3_acd_data_timeout_schedule_probing_restart(acd_data, now_msec);
- return;
+ if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->info.addr)) {
+ log_reason = "address already configured (restart after previous conflict)";
+ goto handle_probing_done;
}
- /* probing started (with the original timeout. Note that acd_data->probing_time*_msec
- * no longer corresponds to the actual timeout of the nacd_probe. This is not a problem
- * because at this point we only trust the internal timer from nacd_probe to get
- * it right. Instead, we keep acd_data->probing_time*_msec unchanged, to remember when
- * we originally wanted to start. */
- _LOGT_acd(acd_data,
- "state: probing started (after retry, timeout %u msec)",
- acd_data->probing_timeout_msec);
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
+ acd_data->probing_timestamp_msec = (*p_now_msec);
+ acd_data->probing_timeout_msec = acd_timeout_msec;
+ if (acd_data->info.state == NM_L3_ACD_ADDR_STATE_USED)
+ log_reason = "restart probing after previously used address";
+ else
+ log_reason = "restart probing after previous conflict";
+ goto handle_start_probing;
+
+ case NM_L3_ACD_ADDR_STATE_READY:
+ nm_assert_not_reached();
return;
- }
- if (acd_data->acd_state == ACD_STATE_PROBE_DONE && !acd_data->probe_result) {
- /* Probing is done, but previously we detected a conflict. After a restart, we retry to
- * probe. */
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+
nm_assert(!acd_data->nacd_probe);
- nm_assert(!acd_data->announcing_failed_is_retrying);
+ _LOGT_acd(acd_data, "retry announcing address");
+ goto handle_start_defending;
- _LOGT_acd(acd_data, "state: restart a new probe after previous conflict");
- acd_data->acd_state = ACD_STATE_INIT;
- goto handle_post_commit;
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ nm_assert_not_reached();
+ return;
}
- if (acd_data->acd_state == ACD_STATE_PROBE_DONE && acd_data->probe_result
- && !acd_data->nacd_probe && acd_data->announcing_failed_is_retrying) {
- /* Probing is done, but previously we failed to start announcing. Retry now. */
- nm_assert(!was_probing);
- _LOGT_acd(acd_data, "state: retry announcing address");
- acd_data->announcing_failed_is_retrying = FALSE;
- goto handle_probe_done;
+ nm_assert_not_reached();
+ return;
+
+ case ACD_STATE_CHANGE_MODE_NACD_USED:
+ nm_assert(acd_data->info.state == NM_L3_ACD_ADDR_STATE_PROBING);
+ nm_assert(acd_data->nacd_probe);
+
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ acd_data->last_conflict_addr = *sender_addr;
+ _l3_acd_data_state_set_full(self,
+ acd_data,
+ NM_L3_ACD_ADDR_STATE_USED,
+ TRUE,
+ "acd completed with address already in use by %s",
+ nm_ether_addr_to_string_a(sender_addr));
+
+ if (!acd_data->acd_data_timeout_source)
+ _l3_acd_data_timeout_schedule(acd_data, ACD_WAIT_TIME_PROBING_FULL_RESTART_MSEC);
+
+ if (!_l3_acd_data_defendconflict_warning_ratelimited(acd_data, p_now_msec)) {
+ _LOGI("IPv4 address %s is used on network connected to interface %d%s%s%s from "
+ "host %s",
+ _nm_utils_inet4_ntop(acd_data->info.addr, sbuf_addr),
+ self->priv.ifindex,
+ NM_PRINT_FMT_QUOTED(self->priv.plobj_next,
+ " (",
+ NMP_OBJECT_CAST_LINK(self->priv.plobj_next)->name,
+ ")",
+ ""),
+ nm_ether_addr_to_string_a(sender_addr));
}
+ return;
+ case ACD_STATE_CHANGE_MODE_NACD_DEFENDED:
+ nm_assert(acd_data->info.state == NM_L3_ACD_ADDR_STATE_DEFENDING);
+ _LOGT_acd(acd_data,
+ "address %s defended from %s",
+ _nm_utils_inet4_ntop(acd_data->info.addr, sbuf_addr),
+ nm_ether_addr_to_string_a(sender_addr));
+ /* we just log an info message. Nothing else to do. */
return;
- }
- case ACD_STATE_CHANGE_MODE_NACD_READY:
- if (acd_data->acd_state == ACD_STATE_PROBING) {
- log_reason = "acd indicates ready";
- goto handle_probing_acd_good;
+ case ACD_STATE_CHANGE_MODE_NACD_CONFLICT:
+ nm_assert(acd_data->info.state == NM_L3_ACD_ADDR_STATE_DEFENDING);
+
+ _LOGT_acd(acd_data,
+ "address conflict for %s detected with %s",
+ _nm_utils_inet4_ntop(acd_data->info.addr, sbuf_addr),
+ nm_ether_addr_to_string_a(sender_addr));
+
+ if (!_l3_acd_data_defendconflict_warning_ratelimited(acd_data, p_now_msec)) {
+ _LOGW("IPv4 address collision detection sees conflict on interface %d%s%s%s for "
+ "address %s from host %s",
+ self->priv.ifindex,
+ NM_PRINT_FMT_QUOTED(self->priv.plobj_next,
+ " (",
+ NMP_OBJECT_CAST_LINK(self->priv.plobj_next)->name,
+ ")",
+ ""),
+ _nm_utils_inet4_ntop(acd_data->info.addr, sbuf_addr),
+ nm_ether_addr_to_string_a(sender_addr));
}
- if (acd_data->acd_state == ACD_STATE_ANNOUNCING) {
- _LOGT_acd(acd_data, "state: ready to start announcing");
- if (n_acd_probe_announce(acd_data->nacd_probe, N_ACD_DEFEND_ALWAYS) != 0)
+
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ acd_data->last_conflict_addr = *sender_addr;
+ _l3_acd_data_state_set(self, acd_data, NM_L3_ACD_ADDR_STATE_CONFLICT, TRUE);
+ if (!acd_data->acd_data_timeout_source)
+ _l3_acd_data_timeout_schedule(acd_data, ACD_WAIT_TIME_CONFLICT_RESTART_MSEC);
+ return;
+
+ case ACD_STATE_CHANGE_MODE_NACD_READY:
+
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ nm_assert(acd_data->nacd_probe);
+ /* we theoretically could re-use this probe for defending. But as we
+ * may not start defending right away, it makes it more complicated. */
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ log_reason = "acd indicates ready";
+ goto handle_probing_done;
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ nm_assert(!acd_data->acd_defend_type_is_active);
+ acd_data->acd_defend_type_is_active = TRUE;
+ _LOGT_acd(acd_data,
+ "start announcing (defend=%s) (after new probe ready)",
+ _l3_acd_defend_type_to_string(acd_data->acd_defend_type_current,
+ sbuf256,
+ sizeof(sbuf256)));
+ if (n_acd_probe_announce(acd_data->nacd_probe,
+ _l3_acd_defend_type_to_nacd(acd_data->acd_defend_type_current))
+ != 0)
nm_assert_not_reached();
return;
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ nm_assert_not_reached();
+ return;
}
- /* nacd really shouldn't call us in this state. There is a bug somewhere. */
nm_assert_not_reached();
return;
- case ACD_STATE_CHANGE_MODE_NACD_USED:
- {
- gs_free char *str_to_free = NULL;
+ case ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED:
- nm_assert(acd_data->acd_state == ACD_STATE_PROBING);
- _LOGT_acd(acd_data,
- "state: probe-done bad (address already in use by %s)",
- nm_utils_bin2hexstr_a(event->_acd_event_payload.sender,
- event->_acd_event_payload.n_sender,
- ':',
- FALSE,
- &str_to_free));
- acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = FALSE;
- goto handle_probe_done;
- }
+ if (self->priv.p->commit_reentrant_count > 0)
+ return;
- case ACD_STATE_CHANGE_MODE_EXTERNAL_ADDED:
- /* the address is configured on the link. This means, ACD passed */
- log_reason = "address configured on link";
- goto handle_probing_acd_good;
+ _LOGT_acd(acd_data, "address was externally added");
- case ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED:
- /* The address got removed. Either we ourself removed it or it was removed externally.
- * In either case, it's not clear what we should do about that, regardless in which
- * ACD state we are, so ignore it. */
- _LOGT_acd(acd_data, "state: address was externally removed. Ignore");
- return;
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ nm_assert_not_reached();
+ return;
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ goto handle_start_defending;
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ log_reason = "address configured on link";
+ goto handle_probing_done;
+ }
- case ACD_STATE_CHANGE_MODE_NACD_DOWN:
- if (acd_data->acd_state < ACD_STATE_PROBE_DONE) {
- /* we are probing, but the probe has a problem that the link went down. Maybe
- * we need to restart. */
+ nm_assert_not_reached();
+ return;
- nm_assert(acd_data->acd_state == ACD_STATE_PROBING);
+ case ACD_STATE_CHANGE_MODE_EXTERNAL_REMOVED:
- if (!acd_data->nacd_probe) {
- /* we are in probing state, but currently not really probing. A timer is
- * running, and we will handle this situation that way. */
- return;
- }
+ if (self->priv.p->commit_reentrant_count > 0)
+ return;
- /* We abort the probing, but we also schedule a timer to restart it. Let
- * the regular re-start handling handle this. */
- _LOGT_acd(acd_data,
- "state: interface-down. Probing aborted but we keep waiting to retry");
- acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
- _l3_acd_data_timeout_schedule_probing_restart(acd_data, now_msec);
+ if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->info.addr)) {
+ /* this can happen, because there might still be the same address with different
+ * plen or peer_address. */
return;
}
- /* We already completed a probe and acted accordingly (by either configuring the address
- * already or by rejecting it). We cannot (easily) re-evaluate what to do now. Should
- * we later restart probing? But what about the decisions we already made??
- * Ignore the situation. */
+ _LOGT_acd(acd_data, "address was externally removed");
+
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ _l3_acd_data_state_set(self, acd_data, NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED, FALSE);
return;
+ case ACD_STATE_CHANGE_MODE_NACD_DOWN:
case ACD_STATE_CHANGE_MODE_LINK_NOW_UP:
- /* The interface just came up. */
-
- if (acd_data->acd_state <= ACD_STATE_PROBING) {
- nm_auto(n_acd_probe_freep) NAcdProbe *probe = NULL;
- const char * failure_reason;
- gboolean acd_not_supported;
-
- /* the interface was probing. We will restart the probe. */
- nm_assert(acd_data->acd_state == ACD_STATE_PROBING);
-
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ nm_assert_not_reached();
+ return;
+ case NM_L3_ACD_ADDR_STATE_PROBING:
if (!acd_data->nacd_probe) {
- /* We currently are waiting to restart probing. We don't handle the link-up
- * event here, we only trigger a timeout right away. */
+ /* we failed starting to probe before and have a timer running to
+ * restart. We don't do anything now, but let the timer handle it.
+ * This also implements some rate limiting for us. */
_LOGT_acd(acd_data,
- "state: ignore link up event while we are waiting to start probing");
- _l3_acd_data_timeout_schedule(acd_data, now_msec, now_msec, TRUE);
+ "ignore link %s event while we are waiting to start probing",
+ state_change_mode == ACD_STATE_CHANGE_MODE_NACD_DOWN ? "down" : "up");
return;
}
- if (acd_data->probing_timestamp_msec + ACD_WAIT_PROBING_RESTART_TIME_MSEC >= now_msec) {
- /* This probe was already started quite a while ago. We ignore the link-up event
- * and let it complete regularly. This is to avoid restarting to probing indefinitely. */
- _LOGT_acd(acd_data, "state: ignore link up event for a probe started long ago");
- return;
- }
+ nm_utils_get_monotonic_timestamp_msec_cached(p_now_msec);
- probe = _l3_acd_nacd_instance_create_probe(self,
- acd_data->addr,
- acd_data->probing_timeout_msec,
- acd_data,
- &acd_not_supported,
- &failure_reason);
- if (!probe) {
- _LOGT_acd(acd_data,
- "state: link up event would cause to retry probing, but creating a probe "
- "failed (%s). Ignore and keep previous probe",
- failure_reason);
+ if (acd_data->probing_timestamp_msec + acd_data->probing_timeout_msec
+ + ACD_WAIT_PROBING_EXTRA_TIME_MSEC + ACD_WAIT_PROBING_EXTRA_TIME2_MSEC
+ >= (*p_now_msec)) {
+ /* The probing already started quite a while ago. We ignore the link event
+ * and let the probe come to it's natural end. */
+ _LOGT_acd(acd_data, "ignore link up event for a probe started long ago");
return;
}
- NM_SWAP(&probe, &acd_data->nacd_probe);
-
- /* We just restarted probing. Note that we don't touch the original acd_data->probing_time*_msec
- * times, otherwise a repeated link up/down cycle could extend the probing indefinitely.
- *
- * This is despite the new probe just started counting now. So, at this point, the
- * timestamp/timeout of acd_data no longer corresponds to the internal timestamp of
- * acd_data->nacd_probe. But since we don't run our own timer against the internal timer of
- * acd_data->nacd_probe, that is not a problem.
- */
- _LOGT_acd(acd_data,
- "state: probing restarted (after link up, new timeout %u msec)",
- acd_data->probing_timeout_msec);
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ if (state_change_mode == ACD_STATE_CHANGE_MODE_NACD_DOWN)
+ log_reason = "restart probing after down event";
+ else
+ log_reason = "restart probing after link up";
+ goto handle_start_probing;
+
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ /* if the link was down/came up, it's no clear what we should do about these
+ * cases. Ignore the event. */
return;
}
-
- /* we are already done with the ACD state. Bringing up an interface has
- * no further consequence w.r.t. the ACD state. */
+ nm_assert_not_reached();
return;
case ACD_STATE_CHANGE_MODE_INSTANCE_RESET:
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
- if (acd_data->acd_state <= ACD_STATE_PROBING) {
- nm_assert(acd_data->acd_state == ACD_STATE_PROBING);
-
- _LOGT_acd(
- acd_data,
- "state: n-acd instance reset. Trigger a restart of the probing (was %sprobing)",
- acd_data->nacd_probe ? "" : "not");
- /* Just destroy the current probe (if any) and retrigger a restart right away. */
- acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
- _l3_acd_data_timeout_schedule(acd_data, now_msec, now_msec, TRUE);
+
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ nm_assert_not_reached();
return;
- }
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+
+ if (!acd_data->nacd_probe) {
+ /* we failed starting to probe before and have a timer running to
+ * restart. We don't do anything now, but let the timer handle it.
+ * This also implements some rate limiting for us. */
+ _LOGT_acd(acd_data,
+ "n-acd instance reset. Ignore event while restarting %s",
+ (acd_data->info.state == NM_L3_ACD_ADDR_STATE_PROBING) ? "probing"
+ : "defending");
+ return;
+ }
- if (acd_data->probe_result) {
- _LOGT_acd(acd_data, "state: n-acd instance reset. Restart announcing");
- } else {
_LOGT_acd(acd_data,
- "state: n-acd instance reset. Reprobe the address that conflicted before");
+ "n-acd instance reset. Trigger a restart of the %s",
+ (acd_data->info.state == NM_L3_ACD_ADDR_STATE_PROBING) ? "probing"
+ : "defending");
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
+ _l3_acd_data_timeout_schedule(acd_data, 0);
+ return;
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_USED:
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ nm_assert(!acd_data->nacd_probe);
+ return;
}
- acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- _l3_acd_data_timeout_schedule(acd_data, now_msec, now_msec, TRUE);
+ nm_assert_not_reached();
return;
}
nm_assert_not_reached();
return;
-handle_post_commit:
- /* we just did a commit of the IP configuration and now visit all ACD states
- * and kick off the necessary actions... */
- if (_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->addr)) {
- log_reason = "address already configured";
- goto handle_probing_acd_good;
- }
- if (_acd_data_collect_tracks_data(acd_data, TRUE, NM_TERNARY_DEFAULT, &acd_timeout_msec) <= 0)
- nm_assert_not_reached();
- if (acd_timeout_msec <= 0) {
- log_reason = "ACD disabled by configuration";
- goto handle_probing_acd_good;
- }
-
- switch (acd_data->acd_state) {
- case ACD_STATE_INIT:
- {
- const char *failure_reason;
- gboolean acd_not_supported;
- NAcdProbe * probe;
-
- nm_assert(!acd_data->nacd_probe);
-
- probe = _l3_acd_nacd_instance_create_probe(self,
- acd_data->addr,
- acd_timeout_msec,
- acd_data,
- &acd_not_supported,
- &failure_reason);
- if (acd_not_supported) {
- nm_assert(!probe);
- _LOGT_acd(acd_data, "state: probe-good (interface does not support ACD)");
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
- }
-
- if (!probe) {
- _LOGT_acd(acd_data,
- "state: probing currently not possible (timeout %u msec; %s)",
- acd_timeout_msec,
- failure_reason);
- acd_data->acd_state = ACD_STATE_PROBING;
- acd_data->probing_timeout_msec = acd_timeout_msec;
- acd_data->probing_timestamp_msec =
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
- _l3_acd_data_timeout_schedule_probing_restart(acd_data, now_msec);
- return;
- }
-
- _LOGT_acd(acd_data, "state: start probing (timeout %u msec)", acd_timeout_msec);
- acd_data->acd_state = ACD_STATE_PROBING;
- acd_data->nacd_probe = probe;
- acd_data->probing_timeout_msec = acd_timeout_msec;
- acd_data->probing_timestamp_msec = nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
- return;
- }
-
- case ACD_STATE_PROBING:
- {
- nm_auto(n_acd_probe_freep) NAcdProbe *probe = NULL;
+handle_start_probing:
+ if (TRUE) {
+ const NML3AcdAddrState orig_state = acd_data->info.state;
+ nm_auto(n_acd_probe_freep) NAcdProbe *probe = NULL;
const char * failure_reason;
gboolean acd_not_supported;
- gint64 old_expiry_msec;
- gint64 new_expiry_msec;
-
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
-
- new_expiry_msec = now_msec + acd_timeout_msec;
- old_expiry_msec = acd_data->probing_timestamp_msec + acd_data->probing_timeout_msec;
- if (!acd_data->nacd_probe) {
- /* we are currently waiting for restarting a probe. At this point, at most we have
- * to adjust the timeout/timestamp and let the regular timeouts handle this. */
-
- if (new_expiry_msec >= old_expiry_msec) {
- /* the running timeout expires before the new timeout. We don't update the timestamp/timerout,
- * because we don't want to prolong the overall probing time. */
- return;
- }
- /* update the timers after out timeout got reduced. Also, reschedule the timeout
- * so that it expires immediately. */
- acd_data->probing_timestamp_msec = now_msec;
- acd_data->probing_timeout_msec = acd_timeout_msec;
- _l3_acd_data_timeout_schedule(acd_data, now_msec, now_msec, TRUE);
- return;
- }
+ nm_assert(NM_IN_SET(acd_data->info.state,
+ NM_L3_ACD_ADDR_STATE_INIT,
+ NM_L3_ACD_ADDR_STATE_PROBING,
+ NM_L3_ACD_ADDR_STATE_USED,
+ NM_L3_ACD_ADDR_STATE_CONFLICT));
- if (new_expiry_msec >= old_expiry_msec) {
- /* we already have ACD running with a timeout that expires before the requested one. There
- * is nothing to do at this time. */
- return;
- }
+ /* note that we reach this line also during a ACD_STATE_CHANGE_MODE_TIMEOUT, when
+ * or when we restart the probing (with a new timeout). In all cases, we still
+ * give the original timeout (acd_data->probing_timeout_msec), and not the remaining
+ * time. That means, the probing step might take longer then originally planned
+ * (e.g. if we initially cannot start probing right away). */
- /* the timeout got reduced. We try to restart the probe. */
probe = _l3_acd_nacd_instance_create_probe(self,
- acd_data->addr,
- acd_timeout_msec,
+ acd_data->info.addr,
+ acd_data->probing_timeout_msec,
acd_data,
&acd_not_supported,
&failure_reason);
@@ -2060,143 +2345,144 @@ handle_post_commit:
if (acd_not_supported) {
nm_assert(!acd_data->nacd_probe);
- _LOGT_acd(acd_data, "state: probe-good (interface does not support ACD anymore)");
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
+ _LOGT_acd(acd_data,
+ "probe-good (interface does not support acd%s, %s)",
+ orig_state == NM_L3_ACD_ADDR_STATE_INIT ? ""
+ : (state_change_mode != ACD_STATE_CHANGE_MODE_TIMEOUT)
+ ? " anymore"
+ : " anymore after timeout",
+ log_reason);
+ goto handle_start_defending;
}
+ _l3_acd_data_state_set(self,
+ acd_data,
+ NM_L3_ACD_ADDR_STATE_PROBING,
+ !NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_INIT,
+ ACD_STATE_CHANGE_MODE_INIT_REAPPLY,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT));
+
if (!acd_data->nacd_probe) {
_LOGT_acd(acd_data,
- "state: probing currently still not possible (timeout %u msec; %s)",
- acd_timeout_msec,
- failure_reason);
- acd_data->acd_state = ACD_STATE_PROBING;
- acd_data->probing_timeout_msec = acd_timeout_msec;
- acd_data->probing_timestamp_msec = now_msec;
- _l3_acd_data_timeout_schedule_probing_restart(acd_data, now_msec);
+ "probing currently %snot possible (timeout %u msec; %s, %s)",
+ orig_state == NM_L3_ACD_ADDR_STATE_INIT ? "" : " still",
+ acd_data->probing_timeout_msec,
+ failure_reason,
+ log_reason);
+ _l3_acd_data_timeout_schedule_probing_restart(acd_data, (*p_now_msec));
return;
}
- /* We update the timestamps (after also restarting the probe).
- *
- * Note that we only reduced the overall expiry. */
- acd_data->probing_timestamp_msec = now_msec;
- acd_data->probing_timeout_msec = acd_timeout_msec;
- _LOGT_acd(acd_data, "state: restart probing (timeout %u msec)", acd_timeout_msec);
+ _LOGT_acd(acd_data,
+ "%sstart probing (timeout %u msec, %s)",
+ orig_state == NM_L3_ACD_ADDR_STATE_INIT ? "" : "re",
+ acd_data->probing_timeout_msec,
+ log_reason);
return;
}
- case ACD_STATE_PROBE_DONE:
- case ACD_STATE_ANNOUNCING:
- goto handle_probe_done;
- }
- nm_assert_not_reached();
- return;
-
-handle_probing_acd_good:
- switch (acd_data->acd_state) {
- case ACD_STATE_INIT:
- _LOGT_acd(acd_data, "state: probe-done good (%s, initializing)", log_reason);
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
- case ACD_STATE_PROBING:
- _LOGT_acd(acd_data, "state: probe-done good (%s, probing done)", log_reason);
+handle_probing_done:
+ switch (acd_data->info.state) {
+ case NM_L3_ACD_ADDR_STATE_INIT:
+ _LOGT_acd(acd_data, "probe-done good (%s, initializing)", log_reason);
+ goto handle_start_defending;
+ case NM_L3_ACD_ADDR_STATE_PROBING:
+ _LOGT_acd(acd_data, "probe-done good (%s, probing done)", log_reason);
if (state_change_mode != ACD_STATE_CHANGE_MODE_NACD_READY)
acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
- acd_data->acd_state = ACD_STATE_PROBE_DONE;
- acd_data->probe_result = TRUE;
- goto handle_probe_done;
- case ACD_STATE_PROBE_DONE:
- if (!acd_data->probe_result) {
- nm_assert(!acd_data->nacd_probe);
- _LOGT_acd(acd_data, "state: probe-done good (%s, after probe failed)", log_reason);
- acd_data->probe_result = TRUE;
- }
- goto handle_probe_done;
- case ACD_STATE_ANNOUNCING:
- nm_assert(acd_data->probe_result);
- goto handle_probe_done;
- }
- nm_assert_not_reached();
- return;
-
-handle_probe_done:
- nm_assert(NM_IN_SET(acd_data->acd_state, ACD_STATE_PROBE_DONE, ACD_STATE_ANNOUNCING));
-
- if (acd_data->initializing)
+ goto handle_start_defending;
+ case NM_L3_ACD_ADDR_STATE_USED:
+ _LOGT_acd(acd_data, "probe-done good (%s, after probe failed)", log_reason);
+ goto handle_start_defending;
+ case NM_L3_ACD_ADDR_STATE_READY:
+ case NM_L3_ACD_ADDR_STATE_DEFENDING:
+ goto handle_start_defending;
+ case NM_L3_ACD_ADDR_STATE_CONFLICT:
return;
-
- if (acd_data->acd_state >= ACD_STATE_ANNOUNCING) {
- nm_assert(acd_data->nacd_probe);
- nm_assert(acd_data->probe_result);
+ case NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED:
+ nm_assert_not_reached();
return;
}
+ nm_assert_not_reached();
+ return;
- if (!acd_data->probe_result) {
- nm_assert(acd_data->acd_state == ACD_STATE_PROBE_DONE);
- nm_assert(!acd_data->nacd_probe);
- /* we just completed probing with negative result.
- * Emit a signal, but also reschedule a timer to restart. */
- if (was_probing) {
- _LOGT_acd(acd_data, "state: acd probe failed; signal failure");
- acd_data->probing_timestamp_msec =
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
- _l3_acd_data_timeout_schedule_probing_full_restart(acd_data, now_msec);
+handle_start_defending:
+ if (!_l3_acd_ipv4_addresses_on_link_contains(self, acd_data->info.addr)) {
+ if (acd_data->info.state != NM_L3_ACD_ADDR_STATE_READY) {
+ _l3_acd_data_state_set_full(self,
+ acd_data,
+ NM_L3_ACD_ADDR_STATE_READY,
+ !NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_INIT,
+ ACD_STATE_CHANGE_MODE_INIT_REAPPLY,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT),
+ "probe is ready, waiting for address to be configured");
}
- _l3_acd_data_notify_acd_completed_queue(self, acd_data);
return;
}
- if (was_probing && acd_data->probe_result) {
- /* probing just completed. Schedule handling the change. */
- _LOGT_acd(acd_data, "state: acd probe succeed");
- _l3_acd_data_notify_acd_completed_queue(self, acd_data);
- if (state_change_mode != ACD_STATE_CHANGE_MODE_POST_COMMIT)
- _l3_changed_configs_set_dirty(self);
- nm_l3cfg_commit_on_idle_schedule(self);
+ _l3_acd_data_state_set(self,
+ acd_data,
+ NM_L3_ACD_ADDR_STATE_DEFENDING,
+ !NM_IN_SET(state_change_mode,
+ ACD_STATE_CHANGE_MODE_INIT,
+ ACD_STATE_CHANGE_MODE_INIT_REAPPLY,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT));
+
+ nm_assert(acd_data->acd_defend_type_desired > NM_L3_ACD_DEFEND_TYPE_NONE);
+ nm_assert(acd_data->acd_defend_type_desired <= NM_L3_ACD_DEFEND_TYPE_ALWAYS);
+
+ if (acd_data->acd_defend_type_desired != acd_data->acd_defend_type_current) {
+ acd_data->acd_defend_type_current = acd_data->acd_defend_type_desired;
+ acd_data->nacd_probe = n_acd_probe_free(acd_data->nacd_probe);
}
if (!acd_data->nacd_probe) {
const char *failure_reason;
NAcdProbe * probe;
- if (acd_data->announcing_failed_is_retrying) {
+ if (acd_data->acd_data_timeout_source) {
/* we already failed to create a probe. We are ratelimited to retry, but
* we have a timer pending... */
return;
}
probe = _l3_acd_nacd_instance_create_probe(self,
- acd_data->addr,
+ acd_data->info.addr,
0,
acd_data,
NULL,
&failure_reason);
if (!probe) {
- /* we failed to create a probe for announcing the address. We log a (rate limited)
- * warning and start a timer to retry. */
- _LOGT_acd(acd_data,
- "state: start announcing failed to create probe (%s)",
- failure_reason);
- acd_data->announcing_failed_is_retrying = TRUE;
- acd_data->probing_timestamp_msec =
- nm_utils_get_monotonic_timestamp_msec_cached(&now_msec);
- _l3_acd_data_timeout_schedule_announce_restart(acd_data, now_msec);
+ /* we failed to create a probe for announcing the address. We log a
+ * warning and start a timer to retry. This way (of having a timer pending)
+ * we also back off and are rate limited from retrying too frequently. */
+ _LOGT_acd(acd_data, "start announcing failed to create probe (%s)", failure_reason);
+ _l3_acd_data_timeout_schedule(acd_data, ACD_WAIT_TIME_ANNOUNCE_RESTART_MSEC);
return;
}
- _LOGT_acd(acd_data, "state: start announcing (with new probe)");
- acd_data->nacd_probe = probe;
- acd_data->acd_state = ACD_STATE_ANNOUNCING;
+ _LOGT_acd(acd_data,
+ "start announcing (defend=%s) (probe created)",
+ _l3_acd_defend_type_to_string(acd_data->acd_defend_type_current,
+ sbuf256,
+ sizeof(sbuf256)));
+ acd_data->acd_defend_type_is_active = FALSE;
+ acd_data->nacd_probe = probe;
return;
}
- if (acd_data->acd_state == ACD_STATE_PROBE_DONE) {
- _LOGT_acd(acd_data, "state: start announcing (with existing probe)");
- acd_data->acd_state = ACD_STATE_ANNOUNCING;
- if (n_acd_probe_announce(acd_data->nacd_probe, N_ACD_DEFEND_ALWAYS) != 0)
+ if (!acd_data->acd_defend_type_is_active) {
+ acd_data->acd_defend_type_is_active = TRUE;
+ _LOGT_acd(acd_data,
+ "start announcing (defend=%s) (with existing probe)",
+ _l3_acd_defend_type_to_string(acd_data->acd_defend_type_current,
+ sbuf256,
+ sizeof(sbuf256)));
+ if (n_acd_probe_announce(acd_data->nacd_probe,
+ _l3_acd_defend_type_to_nacd(acd_data->acd_defend_type_current))
+ != 0)
nm_assert_not_reached();
return;
}
@@ -2205,28 +2491,47 @@ handle_probe_done:
static void
_l3_acd_data_process_changes(NML3Cfg *self)
{
- gboolean acd_is_announcing = FALSE;
- gboolean acd_is_pending = FALSE;
+ gboolean acd_is_pending = FALSE;
+ gboolean acd_busy = FALSE;
AcdData *acd_data;
+ gint64 now_msec = 0;
_l3_acd_data_prune(self, FALSE);
c_list_for_each_entry (acd_data, &self->priv.p->acd_lst_head, acd_lst) {
- _l3_acd_data_state_change(self, acd_data, ACD_STATE_CHANGE_MODE_POST_COMMIT, NULL);
- if (acd_data->acd_state < ACD_STATE_PROBE_DONE)
+ _l3_acd_data_state_change(self,
+ acd_data,
+ ACD_STATE_CHANGE_MODE_POST_COMMIT,
+ NULL,
+ &now_msec);
+ if (acd_data->info.state <= NM_L3_ACD_ADDR_STATE_PROBING)
acd_is_pending = TRUE;
- else if (acd_data->acd_state >= ACD_STATE_ANNOUNCING
- || (acd_data->acd_state >= ACD_STATE_PROBE_DONE && acd_data->probe_result))
- acd_is_announcing = TRUE;
+ if (acd_data->nacd_probe)
+ acd_busy = TRUE;
}
- self->priv.p->acd_is_pending = acd_is_pending;
- self->priv.p->acd_is_announcing = acd_is_announcing;
+ self->priv.p->acd_is_pending = acd_is_pending;
- if (!acd_is_pending && !acd_is_announcing)
+ if (!acd_busy)
_l3_acd_nacd_instance_reset(self, NM_TERNARY_DEFAULT, FALSE);
- _l3_acd_data_notify_acd_completed_all(self);
+ _nm_l3cfg_emit_signal_notify_acd_event_all(self);
+}
+
+/*****************************************************************************/
+
+const NML3AcdAddrInfo *
+nm_l3cfg_get_acd_addr_info(NML3Cfg *self, in_addr_t addr)
+{
+ AcdData *acd_data;
+
+ nm_assert(NM_IS_L3CFG(self));
+
+ acd_data = _l3_acd_data_find(self, addr);
+ if (!acd_data)
+ return NULL;
+
+ return &acd_data->info;
}
/*****************************************************************************/
@@ -2238,7 +2543,7 @@ _l3_commit_on_idle_cb(gpointer user_data)
nm_clear_g_source_inst(&self->priv.p->commit_on_idle_source);
- _LOGT("platform commit on idle");
+ _LOGT("commit on idle");
_l3_commit(self, NM_L3_CFG_COMMIT_TYPE_AUTO, TRUE);
return G_SOURCE_REMOVE;
}
@@ -2251,6 +2556,7 @@ nm_l3cfg_commit_on_idle_schedule(NML3Cfg *self)
if (self->priv.p->commit_on_idle_source)
return;
+ _LOGT("commit on idle (scheduled)");
self->priv.p->commit_on_idle_source =
nm_g_idle_source_new(G_PRIORITY_DEFAULT, _l3_commit_on_idle_cb, self, NULL);
g_source_attach(self->priv.p->commit_on_idle_source, NULL);
@@ -2275,7 +2581,7 @@ _l3_config_datas_find_next(GArray * l3_config_datas,
for (i = start_idx; i < l3_config_datas->len; i++) {
const L3ConfigData *l3_config_data = _l3_config_datas_at(l3_config_datas, i);
- if (NM_IN_SET(needle_tag, NULL, l3_config_data->tag)
+ if (NM_IN_SET(needle_tag, NULL, l3_config_data->tag_confdata)
&& NM_IN_SET(needle_l3cd, NULL, l3_config_data->l3cd))
return i;
}
@@ -2294,54 +2600,15 @@ _l3_config_datas_get_sorted_cmp(gconstpointer p_a, gconstpointer p_b, gpointer u
/* we sort the entries with higher priority (more important, lower numerical value)
* first. */
- NM_CMP_FIELD(a, b, priority);
+ NM_CMP_FIELD(a, b, priority_confdata);
/* if the priority is not unique, we sort them in the order they were added,
* with the oldest first (lower numerical value). */
- NM_CMP_FIELD(a, b, pseudo_timestamp);
+ NM_CMP_FIELD(a, b, pseudo_timestamp_confdata);
return nm_assert_unreachable_val(0);
}
-#define _l3_config_datas_get_sorted_a(l3_config_datas, out_infos, out_infos_len, out_infos_free) \
- G_STMT_START \
- { \
- GArray *const _l3_config_datas = (l3_config_datas); \
- const L3ConfigData *const **const _out_infos = (out_infos); \
- guint *const _out_infos_len = (out_infos_len); \
- const L3ConfigData ***const _out_infos_free = (out_infos_free); \
- gs_free const L3ConfigData **_infos_free = NULL; \
- const L3ConfigData ** _infos; \
- guint _l3_config_datas_len; \
- guint _i; \
- \
- _l3_config_datas_len = nm_g_array_len(_l3_config_datas); \
- \
- if (_l3_config_datas_len == 0) \
- _infos = NULL; \
- else if (_l3_config_datas_len < 300 / sizeof(_infos[0])) \
- _infos = g_alloca(_l3_config_datas_len * sizeof(_infos[0])); \
- else { \
- _infos_free = g_new(const L3ConfigData *, _l3_config_datas_len); \
- _infos = _infos_free; \
- } \
- for (_i = 0; _i < _l3_config_datas_len; _i++) \
- _infos[_i] = _l3_config_datas_at(_l3_config_datas, _i); \
- \
- if (_l3_config_datas_len > 1) { \
- g_qsort_with_data(_infos, \
- _l3_config_datas_len, \
- sizeof(_infos[0]), \
- _l3_config_datas_get_sorted_cmp, \
- NULL); \
- } \
- \
- *_out_infos = _infos; \
- *_out_infos_len = _l3_config_datas_len; \
- *_out_infos_free = g_steal_pointer(&_infos_free); \
- } \
- G_STMT_END
-
static void
_l3_config_datas_remove_index_fast(GArray *arr, guint idx)
{
@@ -2376,7 +2643,7 @@ nm_l3cfg_mark_config_dirty(NML3Cfg *self, gconstpointer tag, gboolean dirty)
if (idx < 0)
return;
- _l3_config_datas_at(self->priv.p->l3_config_datas, idx)->dirty = dirty;
+ _l3_config_datas_at(self->priv.p->l3_config_datas, idx)->dirty_confdata = dirty;
idx++;
}
}
@@ -2393,6 +2660,7 @@ nm_l3cfg_add_config(NML3Cfg * self,
guint32 default_route_metric_6,
guint32 default_route_penalty_4,
guint32 default_route_penalty_6,
+ NML3AcdDefendType acd_defend_type,
guint32 acd_timeout_msec,
NML3ConfigMergeFlags merge_flags)
{
@@ -2405,6 +2673,14 @@ nm_l3cfg_add_config(NML3Cfg * self,
nm_assert(l3cd);
nm_assert(nm_l3_config_data_get_ifindex(l3cd) == self->priv.ifindex);
+ if (acd_timeout_msec > ACD_MAX_TIMEOUT_MSEC)
+ acd_timeout_msec = ACD_MAX_TIMEOUT_MSEC;
+
+ nm_assert(NM_IN_SET(acd_defend_type,
+ NM_L3_ACD_DEFEND_TYPE_NEVER,
+ NM_L3_ACD_DEFEND_TYPE_ONCE,
+ NM_L3_ACD_DEFEND_TYPE_ALWAYS));
+
nm_assert(default_route_metric_6 != 0u); /* IPv6 default route metric cannot be zero. */
if (default_route_table_4 == 0u)
@@ -2434,12 +2710,11 @@ nm_l3cfg_add_config(NML3Cfg * self,
if (l3_config_data->l3cd == l3cd) {
nm_assert(idx == -1);
idx = idx2;
- continue;
+ idx2++;
+ } else {
+ changed = TRUE;
+ _l3_config_datas_remove_index_fast(self->priv.p->l3_config_datas, idx2);
}
-
- changed = TRUE;
- _l3_config_datas_remove_index_fast(self->priv.p->l3_config_datas, idx2);
-
idx2 = _l3_config_datas_find_next(self->priv.p->l3_config_datas, idx2, tag, NULL);
if (idx2 < 0)
break;
@@ -2449,29 +2724,30 @@ nm_l3cfg_add_config(NML3Cfg * self,
if (idx < 0) {
l3_config_data = nm_g_array_append_new(self->priv.p->l3_config_datas, L3ConfigData);
*l3_config_data = (L3ConfigData){
- .tag = tag,
- .l3cd = nm_l3_config_data_ref_and_seal(l3cd),
- .merge_flags = merge_flags,
- .default_route_table_4 = default_route_table_4,
- .default_route_table_6 = default_route_table_6,
- .default_route_metric_4 = default_route_metric_4,
- .default_route_metric_6 = default_route_metric_6,
- .default_route_penalty_4 = default_route_penalty_4,
- .default_route_penalty_6 = default_route_penalty_6,
- .acd_timeout_msec = acd_timeout_msec,
- .priority = priority,
- .pseudo_timestamp = ++self->priv.p->pseudo_timestamp_counter,
- .dirty = FALSE,
+ .tag_confdata = tag,
+ .l3cd = nm_l3_config_data_ref_and_seal(l3cd),
+ .merge_flags = merge_flags,
+ .default_route_table_4 = default_route_table_4,
+ .default_route_table_6 = default_route_table_6,
+ .default_route_metric_4 = default_route_metric_4,
+ .default_route_metric_6 = default_route_metric_6,
+ .default_route_penalty_4 = default_route_penalty_4,
+ .default_route_penalty_6 = default_route_penalty_6,
+ .acd_defend_type_confdata = acd_defend_type,
+ .acd_timeout_msec_confdata = acd_timeout_msec,
+ .priority_confdata = priority,
+ .pseudo_timestamp_confdata = ++self->priv.p->pseudo_timestamp_counter,
+ .dirty_confdata = FALSE,
};
changed = TRUE;
} else {
- l3_config_data = _l3_config_datas_at(self->priv.p->l3_config_datas, idx);
- l3_config_data->dirty = FALSE;
- nm_assert(l3_config_data->tag == tag);
+ l3_config_data = _l3_config_datas_at(self->priv.p->l3_config_datas, idx);
+ l3_config_data->dirty_confdata = FALSE;
+ nm_assert(l3_config_data->tag_confdata == tag);
nm_assert(l3_config_data->l3cd == l3cd);
- if (l3_config_data->priority != priority) {
- l3_config_data->priority = priority;
- changed = TRUE;
+ if (l3_config_data->priority_confdata != priority) {
+ l3_config_data->priority_confdata = priority;
+ changed = TRUE;
}
if (l3_config_data->merge_flags != merge_flags) {
l3_config_data->merge_flags = merge_flags;
@@ -2501,12 +2777,18 @@ nm_l3cfg_add_config(NML3Cfg * self,
l3_config_data->default_route_penalty_6 = default_route_penalty_6;
changed = TRUE;
}
- if (l3_config_data->acd_timeout_msec != acd_timeout_msec) {
- l3_config_data->acd_timeout_msec = acd_timeout_msec;
- changed = TRUE;
+ if (l3_config_data->acd_defend_type_confdata != acd_defend_type) {
+ l3_config_data->acd_defend_type_confdata = acd_defend_type;
+ changed = TRUE;
+ }
+ if (l3_config_data->acd_timeout_msec_confdata != acd_timeout_msec) {
+ l3_config_data->acd_timeout_msec_confdata = acd_timeout_msec;
+ changed = TRUE;
}
}
+ nm_assert(l3_config_data->acd_defend_type_confdata == acd_defend_type);
+
if (changed)
_l3_changed_configs_set_dirty(self);
@@ -2537,7 +2819,8 @@ _l3cfg_remove_config(NML3Cfg * self,
if (idx < 0)
break;
- if (only_dirty && !_l3_config_datas_at(self->priv.p->l3_config_datas, idx)->dirty) {
+ if (only_dirty
+ && !_l3_config_datas_at(self->priv.p->l3_config_datas, idx)->dirty_confdata) {
idx++;
continue;
}
@@ -2582,12 +2865,18 @@ typedef struct {
} L3ConfigMergeHookAddObjData;
static gboolean
-_l3_hook_add_addr_cb(const NML3ConfigData *l3cd, const NMPObject *obj, gpointer user_data)
+_l3_hook_add_addr_cb(const NML3ConfigData *l3cd,
+ const NMPObject * obj,
+ NMTernary * out_ip4acd_not_ready,
+ gpointer user_data)
{
const L3ConfigMergeHookAddObjData *hook_data = user_data;
NML3Cfg * self = hook_data->self;
AcdData * acd_data;
in_addr_t addr;
+ gboolean acd_bad = FALSE;
+
+ nm_assert(out_ip4acd_not_ready && *out_ip4acd_not_ready == NM_TERNARY_DEFAULT);
if (NMP_OBJECT_GET_TYPE(obj) != NMP_OBJECT_TYPE_IP4_ADDRESS)
return TRUE;
@@ -2595,46 +2884,91 @@ _l3_hook_add_addr_cb(const NML3ConfigData *l3cd, const NMPObject *obj, gpointer
addr = NMP_OBJECT_CAST_IP4_ADDRESS(obj)->address;
if (ACD_ADDR_SKIP(addr))
- return TRUE;
+ goto out;
acd_data = _l3_acd_data_find(self, addr);
- nm_assert(acd_data);
+
+ if (!acd_data) {
+ /* we don't yet track an ACD state for this address. That can only
+ * happend during _l3cfg_update_combined_config() with !to_commit,
+ * where we didn't update the ACD state.
+ *
+ * This means, unless you actually commit, nm_l3cfg_get_combined_l3cd(self, get_commited = FALSE)
+ * won't consider IPv4 addresses ready, that have no known ACD state yet. */
+ nm_assert(self->priv.p->changed_configs_acd_state);
+ acd_bad = TRUE;
+ goto out;
+ }
+
nm_assert(
_acd_track_data_is_not_dirty(_acd_data_find_track(acd_data, l3cd, obj, hook_data->tag)));
- return _acd_data_probe_result_is_good(acd_data);
+ if (!NM_IN_SET(acd_data->info.state,
+ NM_L3_ACD_ADDR_STATE_READY,
+ NM_L3_ACD_ADDR_STATE_DEFENDING))
+ acd_bad = TRUE;
+
+out:
+ *out_ip4acd_not_ready = acd_bad ? NM_TERNARY_TRUE : NM_TERNARY_FALSE;
+ return TRUE;
}
static void
_l3cfg_update_combined_config(NML3Cfg * self,
gboolean to_commit,
+ gboolean reapply,
const NML3ConfigData **out_old /* transfer reference */,
- gboolean * out_changed_configs,
gboolean * out_changed_combined_l3cd)
{
- nm_auto_unref_l3cd const NML3ConfigData *l3cd_old = NULL;
- nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
- gs_free const L3ConfigData **l3_config_datas_free = NULL;
- const L3ConfigData *const * l3_config_datas_sorted;
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd_commited_old = NULL;
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd_old = NULL;
+ nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
+ gs_free const L3ConfigData **l3_config_datas_free = NULL;
+ const L3ConfigData ** l3_config_datas_arr;
guint l3_config_datas_len;
guint i;
+ gboolean merged_changed = FALSE;
+ gboolean commited_changed = FALSE;
nm_assert(NM_IS_L3CFG(self));
-
nm_assert(!out_old || !*out_old);
- NM_SET_OUT(out_changed_configs, self->priv.changed_configs);
+
NM_SET_OUT(out_changed_combined_l3cd, FALSE);
- if (!self->priv.changed_configs)
- goto out;
+ if (!self->priv.p->changed_configs_configs) {
+ if (!self->priv.p->changed_configs_acd_state)
+ goto out;
+ if (!to_commit) {
+ /* since we are not going to commit, we don't care about the
+ * ACD state. */
+ goto out;
+ }
+ }
+
+ self->priv.p->changed_configs_configs = FALSE;
- self->priv.changed_configs = FALSE;
+ l3_config_datas_len = nm_g_array_len(self->priv.p->l3_config_datas);
+ l3_config_datas_arr = nm_malloc_maybe_a(300,
+ l3_config_datas_len * sizeof(l3_config_datas_arr[0]),
+ &l3_config_datas_free);
+ for (i = 0; i < l3_config_datas_len; i++)
+ l3_config_datas_arr[i] = _l3_config_datas_at(self->priv.p->l3_config_datas, i);
- _l3_config_datas_get_sorted_a(self->priv.p->l3_config_datas,
- &l3_config_datas_sorted,
- &l3_config_datas_len,
- &l3_config_datas_free);
+ if (l3_config_datas_len > 1) {
+ g_qsort_with_data(l3_config_datas_arr,
+ l3_config_datas_len,
+ sizeof(l3_config_datas_arr[0]),
+ _l3_config_datas_get_sorted_cmp,
+ NULL);
+ }
- _l3_acd_data_add_all(self, l3_config_datas_sorted, l3_config_datas_len);
+ if (!to_commit) {
+ /* we are not going to commit these changes. Hence, we don't update the
+ * ACD states, but we need to remember that we have to on the next commit. */
+ self->priv.p->changed_configs_acd_state = TRUE;
+ } else {
+ _l3_acd_data_add_all(self, l3_config_datas_arr, l3_config_datas_len, reapply);
+ self->priv.p->changed_configs_acd_state = FALSE;
+ }
if (l3_config_datas_len > 0) {
L3ConfigMergeHookAddObjData hook_data = {
@@ -2645,12 +2979,12 @@ _l3cfg_update_combined_config(NML3Cfg * self,
self->priv.ifindex);
for (i = 0; i < l3_config_datas_len; i++) {
- const L3ConfigData *l3cd_data = l3_config_datas_sorted[i];
+ const L3ConfigData *l3cd_data = l3_config_datas_arr[i];
if (NM_FLAGS_HAS(l3cd_data->merge_flags, NM_L3_CONFIG_MERGE_FLAGS_ONLY_FOR_ACD))
continue;
- hook_data.tag = l3cd_data->tag;
+ hook_data.tag = l3cd_data->tag_confdata;
nm_l3_config_data_merge(l3cd,
l3cd_data->l3cd,
l3cd_data->merge_flags,
@@ -2672,24 +3006,43 @@ _l3cfg_update_combined_config(NML3Cfg * self,
l3cd_old = g_steal_pointer(&self->priv.p->combined_l3cd_merged);
self->priv.p->combined_l3cd_merged = nm_l3_config_data_seal(g_steal_pointer(&l3cd));
-
+ merged_changed = TRUE;
if (!to_commit) {
NM_SET_OUT(out_old, g_steal_pointer(&l3cd_old));
NM_SET_OUT(out_changed_combined_l3cd, TRUE);
- _LOGT("desired IP configuration changed");
}
out:
if (to_commit && self->priv.p->combined_l3cd_commited != self->priv.p->combined_l3cd_merged) {
- nm_auto_unref_l3cd const NML3ConfigData *l3cd_commited_old = NULL;
-
l3cd_commited_old = g_steal_pointer(&self->priv.p->combined_l3cd_commited);
self->priv.p->combined_l3cd_commited =
nm_l3_config_data_ref(self->priv.p->combined_l3cd_merged);
-
+ commited_changed = TRUE;
NM_SET_OUT(out_old, g_steal_pointer(&l3cd_commited_old));
NM_SET_OUT(out_changed_combined_l3cd, TRUE);
- _LOGT("desired IP configuration changed for commit");
+ }
+
+ if ((merged_changed || commited_changed) && _LOGT_ENABLED()) {
+ char sbuf256[256];
+ char sbuf30[30];
+
+ _LOGT("IP configuration changed (merged=%c%s, commited=%c%s)",
+ merged_changed ? '>' : '=',
+ NM_HASH_OBFUSCATE_PTR_STR(self->priv.p->combined_l3cd_merged, sbuf256),
+ commited_changed ? '>' : '=',
+ NM_HASH_OBFUSCATE_PTR_STR(self->priv.p->combined_l3cd_commited, sbuf30));
+
+ if (merged_changed) {
+ nm_l3_config_data_log(self->priv.p->combined_l3cd_merged,
+ NULL,
+ nm_sprintf_buf(sbuf256,
+ "l3cfg[" NM_HASH_OBFUSCATE_PTR_FMT
+ ",ifindex=%d]: ",
+ NM_HASH_OBFUSCATE_PTR(self),
+ nm_l3cfg_get_ifindex(self)),
+ LOGL_TRACE,
+ _NMLOG_DOMAIN);
+ }
}
}
@@ -2874,10 +3227,13 @@ out_prune:
/*****************************************************************************/
static gboolean
-_l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
+_l3_commit_one(NML3Cfg * self,
+ int addr_family,
+ NML3CfgCommitType commit_type,
+ gboolean changed_combined_l3cd,
+ const NML3ConfigData *l3cd_old)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
- nm_auto_unref_l3cd const NML3ConfigData *l3cd_old = NULL;
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
gs_unref_ptrarray GPtrArray *addresses = NULL;
gs_unref_ptrarray GPtrArray *routes = NULL;
gs_unref_ptrarray GPtrArray *addresses_prune = NULL;
@@ -2885,8 +3241,6 @@ _l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
gs_unref_ptrarray GPtrArray *routes_temporary_not_available_arr = NULL;
NMIPRouteTableSyncMode route_table_sync = NM_IP_ROUTE_TABLE_SYNC_MODE_NONE;
gboolean final_failure_for_temporary_not_available = FALSE;
- gboolean changed_combined_l3cd;
- gboolean changed_configs;
char sbuf_commit_type[50];
gboolean success = TRUE;
@@ -2902,8 +3256,6 @@ _l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
nm_utils_addr_family_to_char(addr_family),
_l3_cfg_commit_type_to_string(commit_type, sbuf_commit_type, sizeof(sbuf_commit_type)));
- _l3cfg_update_combined_config(self, TRUE, &l3cd_old, &changed_configs, &changed_combined_l3cd);
-
if (changed_combined_l3cd) {
/* our combined configuration changed. We may track entries in externally_removed_objs_hash,
* which are not longer to be considered by our configuration. We need to forget about them. */
@@ -2916,29 +3268,40 @@ _l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
}
if (self->priv.p->combined_l3cd_commited) {
+ GHashTable * externally_removed_objs_hash;
NMDedupMultiFcnSelectPredicate predicate;
+ const NMDedupMultiHeadEntry * head_entry;
if (commit_type != NM_L3_CFG_COMMIT_TYPE_REAPPLY
- && self->priv.p->externally_removed_objs_cnt_addresses_x[IS_IPv4] > 0)
- predicate = _l3cfg_externally_removed_objs_filter;
- else
- predicate = NULL;
- addresses = nm_dedup_multi_objs_to_ptr_array_head(
- nm_l3_config_data_lookup_objs(self->priv.p->combined_l3cd_commited,
- NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4)),
- predicate,
- self->priv.p->externally_removed_objs_hash);
+ && self->priv.p->externally_removed_objs_cnt_addresses_x[IS_IPv4] > 0) {
+ predicate = _l3cfg_externally_removed_objs_filter;
+ externally_removed_objs_hash = self->priv.p->externally_removed_objs_hash;
+ } else {
+ if (IS_IPv4)
+ predicate = _l3cfg_externally_removed_objs_filter;
+ else
+ predicate = NULL;
+ externally_removed_objs_hash = NULL;
+ }
+ head_entry = nm_l3_config_data_lookup_objs(self->priv.p->combined_l3cd_commited,
+ NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4));
+ addresses = nm_dedup_multi_objs_to_ptr_array_head(head_entry,
+ predicate,
+ externally_removed_objs_hash);
if (commit_type != NM_L3_CFG_COMMIT_TYPE_REAPPLY
- && self->priv.p->externally_removed_objs_cnt_routes_x[IS_IPv4] > 0)
- predicate = _l3cfg_externally_removed_objs_filter;
- else
- predicate = NULL;
- routes = nm_dedup_multi_objs_to_ptr_array_head(
- nm_l3_config_data_lookup_objs(self->priv.p->combined_l3cd_commited,
- NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4)),
- predicate,
- self->priv.p->externally_removed_objs_hash);
+ && self->priv.p->externally_removed_objs_cnt_routes_x[IS_IPv4] > 0) {
+ predicate = _l3cfg_externally_removed_objs_filter;
+ externally_removed_objs_hash = self->priv.p->externally_removed_objs_hash;
+ } else {
+ predicate = NULL;
+ externally_removed_objs_hash = NULL;
+ }
+ head_entry = nm_l3_config_data_lookup_objs(self->priv.p->combined_l3cd_commited,
+ NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4));
+ routes = nm_dedup_multi_objs_to_ptr_array_head(head_entry,
+ predicate,
+ externally_removed_objs_hash);
route_table_sync =
nm_l3_config_data_get_route_table_sync(self->priv.p->combined_l3cd_commited,
@@ -2958,22 +3321,13 @@ _l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
self->priv.ifindex,
route_table_sync);
} else if (commit_type == NM_L3_CFG_COMMIT_TYPE_UPDATE) {
- /* during update, we do a cross with the previous configuration.
- *
- * Of course, if an entry is both to be pruned and to be added, then
- * the latter wins. So, this works just nicely. */
- if (l3cd_old) {
- const NMDedupMultiHeadEntry *head_entry;
-
- head_entry =
- nm_l3_config_data_lookup_objs(l3cd_old, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4));
- addresses_prune = nm_dedup_multi_objs_to_ptr_array_head(head_entry, NULL, NULL);
-
- head_entry = nm_l3_config_data_lookup_objs(l3cd_old, NMP_OBJECT_TYPE_IP_ROUTE(IS_IPv4));
- addresses_prune = nm_dedup_multi_objs_to_ptr_array_head(head_entry, NULL, NULL);
- }
+ addresses_prune = nm_g_ptr_array_ref(self->priv.p->last_addresses_x[IS_IPv4]);
+ routes_prune = nm_g_ptr_array_ref(self->priv.p->last_routes_x[IS_IPv4]);
}
+ nm_g_ptr_array_set(&self->priv.p->last_addresses_x[IS_IPv4], addresses);
+ nm_g_ptr_array_set(&self->priv.p->last_routes_x[IS_IPv4], routes);
+
/* FIXME(l3cfg): need to honor and set nm_l3_config_data_get_ip6_privacy(). */
/* FIXME(l3cfg): need to honor and set nm_l3_config_data_get_ndisc_*(). */
/* FIXME(l3cfg): need to honor and set nm_l3_config_data_get_ip6_mtu(). */
@@ -3008,8 +3362,10 @@ _l3_commit_one(NML3Cfg *self, int addr_family, NML3CfgCommitType commit_type)
static void
_l3_commit(NML3Cfg *self, NML3CfgCommitType commit_type, gboolean is_idle)
{
- gboolean commit_type_detected = FALSE;
- char sbuf_ct[30];
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd_old = NULL;
+ gboolean commit_type_detected = FALSE;
+ char sbuf_ct[30];
+ gboolean changed_combined_l3cd;
g_return_if_fail(NM_IS_L3CFG(self));
nm_assert(NM_IN_SET(commit_type,
@@ -3018,6 +3374,7 @@ _l3_commit(NML3Cfg *self, NML3CfgCommitType commit_type, gboolean is_idle)
NM_L3_CFG_COMMIT_TYPE_ASSUME,
NM_L3_CFG_COMMIT_TYPE_UPDATE,
NM_L3_CFG_COMMIT_TYPE_REAPPLY));
+ nm_assert(self->priv.p->commit_reentrant_count == 0);
switch (commit_type) {
case NM_L3_CFG_COMMIT_TYPE_AUTO:
@@ -3043,7 +3400,7 @@ _l3_commit(NML3Cfg *self, NML3CfgCommitType commit_type, gboolean is_idle)
break;
}
- _LOGT("platform-commit %s%s%s",
+ _LOGT("commit %s%s%s",
_l3_cfg_commit_type_to_string(commit_type, sbuf_ct, sizeof(sbuf_ct)),
commit_type_detected ? " (auto)" : "",
is_idle ? " (idle handler)" : "");
@@ -3051,18 +3408,29 @@ _l3_commit(NML3Cfg *self, NML3CfgCommitType commit_type, gboolean is_idle)
if (commit_type == NM_L3_CFG_COMMIT_TYPE_NONE)
return;
+ self->priv.p->commit_reentrant_count++;
+
nm_clear_g_source_inst(&self->priv.p->commit_on_idle_source);
if (commit_type == NM_L3_CFG_COMMIT_TYPE_REAPPLY)
_l3cfg_externally_removed_objs_drop(self);
+ _l3cfg_update_combined_config(self,
+ TRUE,
+ commit_type == NM_L3_CFG_COMMIT_TYPE_REAPPLY,
+ &l3cd_old,
+ &changed_combined_l3cd);
+
/* FIXME(l3cfg): handle items currently not configurable in kernel. */
- _l3_commit_one(self, AF_INET, commit_type);
- _l3_commit_one(self, AF_INET6, commit_type);
+ _l3_commit_one(self, AF_INET, commit_type, changed_combined_l3cd, l3cd_old);
+ _l3_commit_one(self, AF_INET6, commit_type, changed_combined_l3cd, l3cd_old);
_l3_acd_data_process_changes(self);
+ nm_assert(self->priv.p->commit_reentrant_count == 1);
+ self->priv.p->commit_reentrant_count--;
+
_nm_l3cfg_emit_signal_notify_simple(self, NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT);
}
@@ -3141,7 +3509,7 @@ nm_l3cfg_commit_type_register(NML3Cfg * self,
linked = FALSE;
c_list_for_each_entry (h, &self->priv.p->commit_type_lst_head, commit_type_lst) {
if (handle->commit_type >= h->commit_type) {
- c_list_link_before(&self->priv.p->commit_type_lst_head, &handle->commit_type_lst);
+ c_list_link_before(&h->commit_type_lst, &handle->commit_type_lst);
linked = TRUE;
break;
}
@@ -3178,7 +3546,7 @@ nm_l3cfg_get_combined_l3cd(NML3Cfg *self, gboolean get_commited)
if (get_commited)
return self->priv.p->combined_l3cd_commited;
- _l3cfg_update_combined_config(self, FALSE, NULL, NULL, NULL);
+ _l3cfg_update_combined_config(self, FALSE, FALSE, NULL, NULL);
return self->priv.p->combined_l3cd_merged;
}
@@ -3220,8 +3588,7 @@ nm_l3cfg_has_commited_ip6_addresses_pending_dad(NML3Cfg *self)
nmp_lookup_init_object(&plat_lookup, NMP_OBJECT_TYPE_IP6_ADDRESS, self->priv.ifindex);
- nm_platform_iter_obj_for_each(&iter, self->priv.platform, &plat_lookup, &plat_obj)
- {
+ nm_platform_iter_obj_for_each (&iter, self->priv.platform, &plat_lookup, &plat_obj) {
const NMPlatformIP6Address *plat_addr = NMP_OBJECT_CAST_IP6_ADDRESS(plat_obj);
const NMDedupMultiEntry * l3cd_entry;
@@ -3243,6 +3610,47 @@ nm_l3cfg_has_commited_ip6_addresses_pending_dad(NML3Cfg *self)
/*****************************************************************************/
+NML3IPv4LL *
+nm_l3cfg_get_ipv4ll(NML3Cfg *self)
+{
+ g_return_val_if_fail(NM_IS_L3CFG(self), NULL);
+
+ return self->priv.p->ipv4ll;
+}
+
+NML3IPv4LL *
+nm_l3cfg_access_ipv4ll(NML3Cfg *self)
+{
+ g_return_val_if_fail(NM_IS_L3CFG(self), NULL);
+
+ if (self->priv.p->ipv4ll)
+ return nm_l3_ipv4ll_ref(self->priv.p->ipv4ll);
+
+ /* We return the reference. But the NML3IPv4LL instance
+ * will call _nm_l3cfg_unregister_ipv4ll() when it gets
+ * destroyed.
+ *
+ * We don't have weak references, but NML3Cfg and NML3IPv4LL
+ * cooperate to handle this reference. */
+ self->priv.p->ipv4ll = nm_l3_ipv4ll_new(self);
+ return self->priv.p->ipv4ll;
+}
+
+void
+_nm_l3cfg_unregister_ipv4ll(NML3Cfg *self)
+{
+ nm_assert(NM_IS_L3CFG(self));
+
+ /* we don't own the refernce to "self->priv.p->ipv4ll", but
+ * when that instance gets destroyed, we get called back to
+ * forget about it. Basically, it's like a weak pointer. */
+
+ nm_assert(self->priv.p->ipv4ll);
+ self->priv.p->ipv4ll = NULL;
+}
+
+/*****************************************************************************/
+
static void
set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{
@@ -3273,7 +3681,7 @@ nm_l3cfg_init(NML3Cfg *self)
self->priv.p = G_TYPE_INSTANCE_GET_PRIVATE(self, NM_TYPE_L3CFG, NML3CfgPrivate);
c_list_init(&self->priv.p->acd_lst_head);
- c_list_init(&self->priv.p->acd_notify_complete_lst_head);
+ c_list_init(&self->priv.p->acd_event_notify_lst_head);
c_list_init(&self->priv.p->commit_type_lst_head);
}
@@ -3310,6 +3718,7 @@ finalize(GObject *object)
NML3Cfg *self = NM_L3CFG(object);
nm_assert(!self->priv.p->l3_config_datas);
+ nm_assert(!self->priv.p->ipv4ll);
nm_assert(c_list_is_empty(&self->priv.p->commit_type_lst_head));
@@ -3320,7 +3729,7 @@ finalize(GObject *object)
_l3_acd_data_prune(self, TRUE);
nm_assert(c_list_is_empty(&self->priv.p->acd_lst_head));
- nm_assert(c_list_is_empty(&self->priv.p->acd_notify_complete_lst_head));
+ nm_assert(c_list_is_empty(&self->priv.p->acd_event_notify_lst_head));
nm_assert(nm_g_hash_table_size(self->priv.p->acd_lst_hash) == 0);
nm_clear_pointer(&self->priv.p->acd_lst_hash, g_hash_table_unref);
@@ -3328,6 +3737,11 @@ finalize(GObject *object)
nm_clear_g_source_inst(&self->priv.p->nacd_source);
nm_clear_g_source_inst(&self->priv.p->nacd_instance_ensure_retry);
+ nm_clear_pointer(&self->priv.p->last_addresses_4, g_ptr_array_unref);
+ nm_clear_pointer(&self->priv.p->last_addresses_6, g_ptr_array_unref);
+ nm_clear_pointer(&self->priv.p->last_routes_4, g_ptr_array_unref);
+ nm_clear_pointer(&self->priv.p->last_routes_6, g_ptr_array_unref);
+
nm_clear_g_source(&self->priv.p->routes_temporary_not_available_id);
nm_clear_pointer(&self->priv.p->routes_temporary_not_available_hash, g_hash_table_unref);
diff --git a/src/nm-l3cfg.h b/src/nm-l3cfg.h
index 9f957ae10c..e83bdc9163 100644
--- a/src/nm-l3cfg.h
+++ b/src/nm-l3cfg.h
@@ -6,6 +6,9 @@
#include "platform/nmp-object.h"
#include "nm-l3-config-data.h"
+#define NM_L3CFG_CONFIG_PRIORITY_IPV4LL 0
+#define NM_ACD_TIMEOUT_RFC5227_MSEC 9000u
+
#define NM_TYPE_L3CFG (nm_l3cfg_get_type())
#define NM_L3CFG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_L3CFG, NML3Cfg))
#define NM_L3CFG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_L3CFG, NML3CfgClass))
@@ -18,10 +21,76 @@
#define NM_L3CFG_SIGNAL_NOTIFY "l3cfg-notify"
+typedef enum _nm_packed {
+ NM_L3_ACD_DEFEND_TYPE_NONE,
+ NM_L3_ACD_DEFEND_TYPE_NEVER,
+ NM_L3_ACD_DEFEND_TYPE_ONCE,
+ NM_L3_ACD_DEFEND_TYPE_ALWAYS,
+} NML3AcdDefendType;
+
+typedef enum _nm_packed {
+ NM_L3_ACD_ADDR_STATE_INIT,
+ NM_L3_ACD_ADDR_STATE_PROBING,
+ NM_L3_ACD_ADDR_STATE_USED,
+ NM_L3_ACD_ADDR_STATE_READY,
+ NM_L3_ACD_ADDR_STATE_DEFENDING,
+ NM_L3_ACD_ADDR_STATE_CONFLICT,
+ NM_L3_ACD_ADDR_STATE_EXTERNAL_REMOVED,
+} NML3AcdAddrState;
+
+typedef struct {
+ const NMPObject * obj;
+ const NML3ConfigData *l3cd;
+ gconstpointer tag;
+
+ struct {
+ guint32 acd_timeout_msec_track;
+ NML3AcdDefendType acd_defend_type_track;
+ bool acd_dirty_track : 1;
+ bool acd_failed_notified_track : 1;
+ } _priv;
+
+} NML3AcdAddrTrackInfo;
+
+typedef struct {
+ in_addr_t addr;
+ guint n_track_infos;
+ NML3AcdAddrState state;
+ NML3Cfg * l3cfg;
+ const NML3AcdAddrTrackInfo *track_infos;
+} NML3AcdAddrInfo;
+
+static inline const NML3AcdAddrTrackInfo *
+nm_l3_acd_addr_info_find_track_info(const NML3AcdAddrInfo *addr_info,
+ gconstpointer tag,
+ const NML3ConfigData * l3cd,
+ const NMPObject * obj)
+{
+ guint i;
+ const NML3AcdAddrTrackInfo *ti;
+
+ nm_assert(addr_info);
+
+ /* we always expect that the number n_track_infos is reasonably small. Hence,
+ * a naive linear search is simplest and fastest (e.g. we don't have a hash table). */
+
+ for (i = 0, ti = addr_info->track_infos; i < addr_info->n_track_infos; i++, ti++) {
+ if (l3cd && ti->l3cd != l3cd)
+ continue;
+ if (tag && ti->tag != tag)
+ continue;
+ if (obj && ti->obj != obj)
+ continue;
+ return ti;
+ }
+
+ return NULL;
+}
+
typedef enum {
NM_L3_CONFIG_NOTIFY_TYPE_ROUTES_TEMPORARY_NOT_AVAILABLE_EXPIRED,
- NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED,
+ NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT,
/* emitted at the end of nm_l3cfg_platform_commit(). */
NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT,
@@ -38,24 +107,19 @@ typedef enum {
* notifications without also subscribing directly to the platform. */
NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE,
+ NM_L3_CONFIG_NOTIFY_TYPE_IPV4LL_EVENT,
+
_NM_L3_CONFIG_NOTIFY_TYPE_NUM,
} NML3ConfigNotifyType;
-typedef struct {
- const NMPObject * obj;
- const NML3ConfigData *l3cd;
- gconstpointer tag;
-} NML3ConfigNotifyPayloadAcdFailedSource;
+struct _NML3IPv4LL;
typedef struct {
NML3ConfigNotifyType notify_type;
union {
struct {
- in_addr_t addr;
- guint sources_len;
- bool probe_result : 1;
- const NML3ConfigNotifyPayloadAcdFailedSource *sources;
- } acd_completed;
+ NML3AcdAddrInfo info;
+ } acd_event;
struct {
const NMPObject * obj;
@@ -65,6 +129,10 @@ typedef struct {
struct {
guint32 obj_type_flags;
} platform_change_on_idle;
+
+ struct {
+ struct _NML3IPv4LL *ipv4ll;
+ } ipv4ll_event;
};
} NML3ConfigNotifyData;
@@ -79,7 +147,6 @@ struct _NML3Cfg {
const NMPObject * plobj;
const NMPObject * plobj_next;
int ifindex;
- bool changed_configs : 1;
} priv;
};
@@ -205,6 +272,7 @@ gboolean nm_l3cfg_add_config(NML3Cfg * self,
guint32 default_route_metric_6,
guint32 default_route_penalty_4,
guint32 default_route_penalty_6,
+ NML3AcdDefendType acd_defend_type,
guint32 acd_timeout_msec,
NML3ConfigMergeFlags merge_flags);
@@ -250,6 +318,10 @@ void nm_l3cfg_commit_on_idle_schedule(NML3Cfg *self);
/*****************************************************************************/
+const NML3AcdAddrInfo *nm_l3cfg_get_acd_addr_info(NML3Cfg *self, in_addr_t addr);
+
+/*****************************************************************************/
+
NML3CfgCommitType nm_l3cfg_commit_type_get(NML3Cfg *self);
typedef struct _NML3CfgCommitTypeHandle NML3CfgCommitTypeHandle;
@@ -273,4 +345,12 @@ gboolean nm_l3cfg_has_commited_ip6_addresses_pending_dad(NML3Cfg *self);
/*****************************************************************************/
+struct _NML3IPv4LL *nm_l3cfg_get_ipv4ll(NML3Cfg *self);
+
+struct _NML3IPv4LL *nm_l3cfg_access_ipv4ll(NML3Cfg *self);
+
+void _nm_l3cfg_unregister_ipv4ll(NML3Cfg *self);
+
+/*****************************************************************************/
+
#endif /* __NM_L3CFG_H__ */
diff --git a/src/nm-logging.h b/src/nm-logging.h
index b2251c929d..cfaffa9885 100644
--- a/src/nm-logging.h
+++ b/src/nm-logging.h
@@ -17,18 +17,6 @@
#define NM_LOG_CONFIG_BACKEND_SYSLOG "syslog"
#define NM_LOG_CONFIG_BACKEND_JOURNAL "journal"
-static inline NMLogDomain
-LOGD_IP_from_af(int addr_family)
-{
- switch (addr_family) {
- case AF_INET:
- return LOGD_IP4;
- case AF_INET6:
- return LOGD_IP6;
- }
- g_return_val_if_reached(LOGD_NONE);
-}
-
#define nm_log_err(domain, ...) nm_log(LOGL_ERR, (domain), NULL, NULL, __VA_ARGS__)
#define nm_log_warn(domain, ...) nm_log(LOGL_WARN, (domain), NULL, NULL, __VA_ARGS__)
#define nm_log_info(domain, ...) nm_log(LOGL_INFO, (domain), NULL, NULL, __VA_ARGS__)
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 46f81c7cb4..03906c8435 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -142,7 +142,7 @@ typedef struct {
GArray *capabilities;
- CList active_connections_lst_head;
+ CList active_connections_lst_head; /* Oldest ACs at the beginning */
CList async_op_lst_head;
guint ac_cleanup_id;
NMActiveConnection *primary_connection;
@@ -941,7 +941,7 @@ active_connection_add(NMManager *self, NMActiveConnection *active)
nm_assert(NM_IS_ACTIVE_CONNECTION(active));
nm_assert(!c_list_is_linked(&active->active_connections_lst));
- c_list_link_front(&priv->active_connections_lst_head, &active->active_connections_lst);
+ c_list_link_tail(&priv->active_connections_lst_head, &active->active_connections_lst);
g_object_ref(active);
g_signal_connect(active,
@@ -987,7 +987,7 @@ active_connection_find(
nm_assert(!sett_conn || NM_IS_SETTINGS_CONNECTION(sett_conn));
nm_assert(!out_all_matching || !*out_all_matching);
- c_list_for_each_entry (ac, &priv->active_connections_lst_head, active_connections_lst) {
+ c_list_for_each_entry_prev (ac, &priv->active_connections_lst_head, active_connections_lst) {
NMSettingsConnection *ac_conn;
ac_conn = nm_active_connection_get_settings_connection(ac);
@@ -1013,8 +1013,37 @@ active_connection_find(
g_ptr_array_add(all, g_object_ref(ac));
}
- if (!best_ac)
- return NULL;
+ if (!best_ac) {
+ AsyncOpData *async_op_data;
+
+ c_list_for_each_entry (async_op_data, &priv->async_op_lst_head, async_op_lst) {
+ NMSettingsConnection *ac_conn;
+
+ ac = async_op_data->ac_auth.active;
+ ac_conn = nm_active_connection_get_settings_connection(ac);
+ if (sett_conn && sett_conn != ac_conn)
+ continue;
+ if (uuid && !nm_streq0(uuid, nm_settings_connection_get_uuid(ac_conn)))
+ continue;
+
+ if (!out_all_matching)
+ return ac;
+
+ if (!best_ac) {
+ best_ac = ac;
+ continue;
+ }
+
+ if (!all) {
+ all = g_ptr_array_new_with_free_func(g_object_unref);
+ g_ptr_array_add(all, g_object_ref(best_ac));
+ }
+ g_ptr_array_add(all, g_object_ref(ac));
+ }
+
+ if (!best_ac)
+ return NULL;
+ }
/* as an optimization, we only allocate out_all_matching, if there are more
* than one result. If there is only one result, we only return the single
@@ -2495,16 +2524,7 @@ nm_manager_device_auth_request(NMManager * self,
&error))
goto fail_on_idle;
- /* Validate the request */
chain = nm_auth_chain_new_subject(subject, context, device_auth_done_cb, self);
- if (!chain) {
- g_set_error(&error,
- NM_MANAGER_ERROR,
- NM_MANAGER_ERROR_PERMISSION_DENIED,
- NM_UTILS_ERROR_MSG_REQ_AUTH_FAILED);
- goto fail_on_idle;
- }
-
if (cancellable)
nm_auth_chain_set_cancellable(chain, cancellable);
@@ -5184,6 +5204,7 @@ _internal_activation_auth_done(NMManager * self,
return;
fail:
+ _delete_volatile_connection_do(self, nm_active_connection_get_settings_connection(active));
nm_assert(error_desc || error);
nm_active_connection_set_state_fail(active,
NM_ACTIVE_CONNECTION_STATE_REASON_UNKNOWN,
@@ -5452,6 +5473,8 @@ _activation_auth_done(NMManager * self,
return;
fail:
+ _delete_volatile_connection_do(self, connection);
+
nm_audit_log_connection_op(NM_AUDIT_OP_CONN_ACTIVATE,
connection,
FALSE,
@@ -6038,15 +6061,7 @@ impl_manager_deactivate_connection(NMDBusObject * obj,
&error))
goto done;
- /* Validate the user request */
chain = nm_auth_chain_new_subject(subject, invocation, deactivate_net_auth_done_cb, self);
- if (!chain) {
- error = g_error_new_literal(NM_MANAGER_ERROR,
- NM_MANAGER_ERROR_PERMISSION_DENIED,
- NM_UTILS_ERROR_MSG_REQ_AUTH_FAILED);
- goto done;
- }
-
c_list_link_tail(&priv->auth_lst_head, nm_auth_chain_parent_lst_list(chain));
nm_auth_chain_set_data(chain, "path", g_strdup(active_path), g_free);
nm_auth_chain_add_call(chain, NM_AUTH_PERMISSION_NETWORK_CONTROL, TRUE);
@@ -7857,7 +7872,9 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
break;
case PROP_ACTIVE_CONNECTIONS:
ptrarr = g_ptr_array_new();
- c_list_for_each_entry (ac, &priv->active_connections_lst_head, active_connections_lst) {
+ c_list_for_each_entry_prev (ac,
+ &priv->active_connections_lst_head,
+ active_connections_lst) {
path = nm_dbus_object_get_path(NM_DBUS_OBJECT(ac));
if (path)
g_ptr_array_add(ptrarr, g_strdup(path));
diff --git a/src/nm-manager.h b/src/nm-manager.h
index 75f8a673d0..fcb29cf562 100644
--- a/src/nm-manager.h
+++ b/src/nm-manager.h
@@ -72,6 +72,7 @@ NMState nm_manager_get_state(NMManager *manager);
const CList *nm_manager_get_active_connections(NMManager *manager);
+/* From least recently activated */
#define nm_manager_for_each_active_connection(manager, iter, tmp_list) \
for (tmp_list = nm_manager_get_active_connections(manager), \
iter = c_list_entry(tmp_list->next, NMActiveConnection, active_connections_lst); \
@@ -86,6 +87,22 @@ const CList *nm_manager_get_active_connections(NMManager *manager);
NMActiveConnection, \
active_connections_lst))
+/* From most recently activated */
+#define nm_manager_for_each_active_connection_prev(manager, iter, tmp_list) \
+ for (tmp_list = nm_manager_get_active_connections(manager), \
+ iter = c_list_entry(tmp_list->prev, NMActiveConnection, active_connections_lst); \
+ ({ \
+ const gboolean _has_prev = (&iter->active_connections_lst != tmp_list); \
+ \
+ if (!_has_prev) \
+ iter = NULL; \
+ _has_prev; \
+ }); \
+ iter = c_list_entry(iter->active_connections_lst.prev, \
+ NMActiveConnection, \
+ active_connections_lst))
+
+/* From least recently activated */
#define nm_manager_for_each_active_connection_safe(manager, iter, tmp_list, iter_safe) \
for (tmp_list = nm_manager_get_active_connections(manager), iter_safe = tmp_list->next; ({ \
if (iter_safe != tmp_list) { \
diff --git a/src/nm-netns.c b/src/nm-netns.c
index 2970e45c91..879bdee237 100644
--- a/src/nm-netns.c
+++ b/src/nm-netns.c
@@ -126,6 +126,19 @@ _l3cfg_weak_notify(gpointer data, GObject *where_the_object_was)
}
NML3Cfg *
+nm_netns_get_l3cfg(NMNetns *self, int ifindex)
+{
+ NMNetnsPrivate *priv;
+
+ g_return_val_if_fail(NM_IS_NETNS(self), NULL);
+ g_return_val_if_fail(ifindex > 0, NULL);
+
+ priv = NM_NETNS_GET_PRIVATE(self);
+
+ return g_hash_table_lookup(priv->l3cfgs, &ifindex);
+}
+
+NML3Cfg *
nm_netns_access_l3cfg(NMNetns *self, int ifindex)
{
NMNetnsPrivate *priv;
@@ -453,7 +466,7 @@ dispose(GObject *object)
g_signal_handlers_disconnect_by_data(priv->platform, &priv->_self_signal_user_data);
g_clear_object(&priv->platform);
- g_clear_pointer(&priv->l3cfgs, g_hash_table_unref);
+ nm_clear_pointer(&priv->l3cfgs, g_hash_table_unref);
nm_clear_pointer(&priv->rules_manager, nmp_rules_manager_unref);
diff --git a/src/nm-netns.h b/src/nm-netns.h
index bb0c955ef3..5ae0c294b3 100644
--- a/src/nm-netns.h
+++ b/src/nm-netns.h
@@ -31,6 +31,8 @@ struct _NMDedupMultiIndex *nm_netns_get_multi_idx(NMNetns *self);
#define NM_NETNS_GET (nm_netns_get())
+NML3Cfg *nm_netns_get_l3cfg(NMNetns *self, int ifindex);
+
NML3Cfg *nm_netns_access_l3cfg(NMNetns *netns, int ifindex);
/*****************************************************************************/
diff --git a/src/nm-pacrunner-manager.c b/src/nm-pacrunner-manager.c
index 0fb3198481..7c1c2c56a5 100644
--- a/src/nm-pacrunner-manager.c
+++ b/src/nm-pacrunner-manager.c
@@ -126,11 +126,13 @@ NM_AUTO_DEFINE_FCN0(NMPacrunnerConfId *, _nm_auto_unref_conf_id, conf_id_unref);
static void
get_ip_domains(GPtrArray *domains, NMIPConfig *ip_config)
{
- NMDedupMultiIter ipconf_iter;
- char * cidr;
- guint i, num;
- char sbuf[NM_UTILS_INET_ADDRSTRLEN];
- int addr_family;
+ NMDedupMultiIter ipconf_iter;
+ char * cidr;
+ guint i, num;
+ char sbuf[NM_UTILS_INET_ADDRSTRLEN];
+ int addr_family;
+ const NMPlatformIPAddress *address;
+ const NMPlatformIPRoute * routes;
if (!ip_config)
return;
@@ -145,47 +147,20 @@ get_ip_domains(GPtrArray *domains, NMIPConfig *ip_config)
for (i = 0; i < num; i++)
g_ptr_array_add(domains, g_strdup(nm_ip_config_get_domain(ip_config, i)));
- if (addr_family == AF_INET) {
- const NMPlatformIP4Address *address;
-
- nm_ip_config_iter_ip4_address_for_each (&ipconf_iter, (NMIP4Config *) ip_config, &address) {
- cidr = g_strdup_printf("%s/%u",
- _nm_utils_inet4_ntop(address->address, sbuf),
- address->plen);
- g_ptr_array_add(domains, cidr);
- }
- } else {
- const NMPlatformIP6Address *address;
-
- nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, (NMIP6Config *) ip_config, &address) {
- cidr = g_strdup_printf("%s/%u",
- _nm_utils_inet6_ntop(&address->address, sbuf),
- address->plen);
- g_ptr_array_add(domains, cidr);
- }
+ nm_ip_config_iter_ip_address_for_each (&ipconf_iter, ip_config, &address) {
+ cidr = g_strdup_printf("%s/%u",
+ nm_utils_inet_ntop(addr_family, address->address_ptr, sbuf),
+ address->plen);
+ g_ptr_array_add(domains, cidr);
}
- if (addr_family == AF_INET) {
- const NMPlatformIP4Route *routes;
-
- nm_ip_config_iter_ip4_route_for_each (&ipconf_iter, (NMIP4Config *) ip_config, &routes) {
- if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(routes))
- continue;
- cidr =
- g_strdup_printf("%s/%u", _nm_utils_inet4_ntop(routes->network, sbuf), routes->plen);
- g_ptr_array_add(domains, cidr);
- }
- } else {
- const NMPlatformIP6Route *routes;
-
- nm_ip_config_iter_ip6_route_for_each (&ipconf_iter, (NMIP6Config *) ip_config, &routes) {
- if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(routes))
- continue;
- cidr = g_strdup_printf("%s/%u",
- _nm_utils_inet6_ntop(&routes->network, sbuf),
- routes->plen);
- g_ptr_array_add(domains, cidr);
- }
+ nm_ip_config_iter_ip_route_for_each (&ipconf_iter, ip_config, &routes) {
+ if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT(routes))
+ continue;
+ cidr = g_strdup_printf("%s/%u",
+ nm_utils_inet_ntop(addr_family, routes->network_ptr, sbuf),
+ routes->plen);
+ g_ptr_array_add(domains, cidr);
}
}
diff --git a/src/nm-policy.c b/src/nm-policy.c
index 038b89cf8a..568c55eefb 100644
--- a/src/nm-policy.c
+++ b/src/nm-policy.c
@@ -64,14 +64,7 @@ typedef struct {
NMActiveConnection *default_ac4, *activating_ac4;
NMActiveConnection *default_ac6, *activating_ac6;
- struct {
- GInetAddress *addr;
- GResolver * resolver;
- GCancellable *cancellable;
- } lookup;
-
NMDnsManager *dns_manager;
- gulong config_changed_id;
guint reset_retries_id; /* idle handler for resetting the retries count */
@@ -117,6 +110,8 @@ _PRIV_TO_SELF(NMPolicyPrivate *priv)
/*****************************************************************************/
#define _NMLOG_PREFIX_NAME "policy"
+#undef _NMLOG_ENABLED
+#define _NMLOG_ENABLED(level, domain) (nm_logging_enabled((level), (domain)))
#define _NMLOG(level, domain, ...) \
G_STMT_START \
{ \
@@ -131,6 +126,7 @@ _PRIV_TO_SELF(NMPolicyPrivate *priv)
/*****************************************************************************/
+static void update_system_hostname(NMPolicy *self, const char *msg);
static void schedule_activate_all(NMPolicy *self);
static void schedule_activate_check(NMPolicy *self, NMDevice *device);
static NMDevice *get_default_device(NMPolicy *self, int addr_family);
@@ -359,11 +355,11 @@ device_ip6_prefix_delegated(NMDevice *device, NMPlatformIP6Address *prefix, gpoi
delegation->device = device;
delegation->prefix = *prefix;
- /* The newly activated connections are added to the list beginning,
- * so traversing it from the beginning makes it likely for newly
+ /* The newly activated connections are added to the end of the list,
+ * so traversing it from the end makes it likely for newly
* activated connections that have no subnet assigned to be served
* first. That is a simple yet fair policy, which is good. */
- nm_manager_for_each_active_connection (priv->manager, ac, tmp_list) {
+ nm_manager_for_each_active_connection_prev (priv->manager, ac, tmp_list) {
NMDevice *to_device;
to_device = nm_active_connection_get_device(ac);
@@ -588,12 +584,6 @@ _set_hostname(NMPolicy *self, const char *new_hostname, const char *msg)
* there was no valid hostname to start with.
*/
- /* Clear lookup addresses if we have a hostname, so that we don't
- * restart the reverse lookup thread later.
- */
- if (new_hostname)
- g_clear_object(&priv->lookup.addr);
-
/* Update the DNS only if the hostname is actually
* going to change.
*/
@@ -639,57 +629,168 @@ _set_hostname(NMPolicy *self, const char *new_hostname, const char *msg)
g_object_ref(self));
}
-static void
-lookup_callback(GObject *source, GAsyncResult *result, gpointer user_data)
+typedef struct {
+ NMDevice *device;
+ int priority;
+ bool from_dhcp : 1;
+ bool from_dns : 1;
+
+ union {
+ struct {
+ bool ip_6;
+ bool ip_4;
+ };
+ bool ip_x[2];
+ };
+} DeviceHostnameInfo;
+
+static int
+device_hostname_info_compare(gconstpointer a, gconstpointer b)
{
- NMPolicy * self;
- NMPolicyPrivate *priv;
- gs_free char * hostname = NULL;
- gs_free_error GError *error = NULL;
+ const DeviceHostnameInfo *info1 = a;
+ const DeviceHostnameInfo *info2 = b;
- hostname = g_resolver_lookup_by_address_finish(G_RESOLVER(source), result, &error);
- if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- return;
+ NM_CMP_FIELD(info1, info2, priority);
- self = user_data;
- priv = NM_POLICY_GET_PRIVATE(self);
+ return 0;
+}
+
+NM_CON_DEFAULT_NOP("hostname.from-dhcp");
+NM_CON_DEFAULT_NOP("hostname.from-dns-lookup");
+NM_CON_DEFAULT_NOP("hostname.only-from-default");
+
+static gboolean
+device_get_hostname_property_boolean(NMDevice *device, const char *name)
+{
+ NMSettingHostname *s_hostname;
+ char buf[128];
+ int value;
+
+ nm_assert(NM_IN_STRSET(name,
+ NM_SETTING_HOSTNAME_FROM_DHCP,
+ NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
+ NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT));
+
+ s_hostname = nm_device_get_applied_setting(device, NM_TYPE_SETTING_HOSTNAME);
+
+ if (s_hostname) {
+ g_object_get(s_hostname, name, &value, NULL);
+ if (NM_IN_SET(value, NM_TERNARY_FALSE, NM_TERNARY_TRUE))
+ return value;
+ }
+
+ return nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
+ nm_sprintf_buf(buf, "hostname.%s", name),
+ device,
+ NM_TERNARY_FALSE,
+ NM_TERNARY_TRUE,
+ NM_TERNARY_TRUE);
+}
+
+static int
+device_get_hostname_priority(NMDevice *device)
+{
+ NMSettingHostname *s_hostname;
+ int priority;
- g_clear_object(&priv->lookup.cancellable);
+ s_hostname = nm_device_get_applied_setting(device, NM_TYPE_SETTING_HOSTNAME);
+ if (s_hostname) {
+ priority = nm_setting_hostname_get_priority(s_hostname);
+ if (priority != 0)
+ return priority;
+ }
- if (hostname)
- _set_hostname(self, hostname, "from address lookup");
- else
- _set_hostname(self, NULL, error->message);
+ return nm_config_data_get_connection_default_int64(NM_CONFIG_GET_DATA,
+ NM_CON_DEFAULT("hostname.priority"),
+ device,
+ G_MININT,
+ G_MAXINT,
+ 100);
+}
+
+static GArray *
+build_device_hostname_infos(NMPolicy *self)
+{
+ NMPolicyPrivate * priv = NM_POLICY_GET_PRIVATE(self);
+ const CList * tmp_clist;
+ NMActiveConnection *ac;
+ GArray * array = NULL;
+
+ nm_manager_for_each_active_connection (priv->manager, ac, tmp_clist) {
+ DeviceHostnameInfo *info;
+ NMDevice * device;
+ gboolean only_from_default;
+
+ device = nm_active_connection_get_device(ac);
+ if (!device)
+ continue;
+
+ only_from_default =
+ device_get_hostname_property_boolean(device, NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT);
+ if (only_from_default && ac != priv->default_ac4 && ac != priv->default_ac6)
+ continue;
+
+ if (!array)
+ array = g_array_sized_new(FALSE, FALSE, sizeof(DeviceHostnameInfo), 4);
+
+ info = nm_g_array_append_new(array, DeviceHostnameInfo);
+ *info = (DeviceHostnameInfo){
+ .device = device,
+ .priority = device_get_hostname_priority(device),
+ .from_dhcp =
+ device_get_hostname_property_boolean(device, NM_SETTING_HOSTNAME_FROM_DHCP),
+ .from_dns =
+ device_get_hostname_property_boolean(device, NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP),
+ .ip_4 = priv->default_ac4 || !only_from_default,
+ .ip_6 = priv->default_ac6 || !only_from_default,
+ };
+ }
+
+ if (array && array->len > 1) {
+ const DeviceHostnameInfo *info0;
+ guint i;
+
+ g_array_sort(array, device_hostname_info_compare);
+
+ info0 = &g_array_index(array, DeviceHostnameInfo, 0);
+ if (info0->priority < 0) {
+ for (i = 1; i < array->len; i++) {
+ const DeviceHostnameInfo *info = &g_array_index(array, DeviceHostnameInfo, i);
+
+ if (info->priority > info0->priority) {
+ g_array_set_size(array, i);
+ break;
+ }
+ }
+ }
+ }
+
+ return array;
}
static void
-lookup_by_address(NMPolicy *self)
+device_dns_lookup_done(NMDevice *device, gpointer user_data)
{
- NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
+ NMPolicy *self = user_data;
+
+ g_signal_handlers_disconnect_by_func(device, device_dns_lookup_done, self);
- nm_clear_g_cancellable(&priv->lookup.cancellable);
- priv->lookup.cancellable = g_cancellable_new();
- g_resolver_lookup_by_address_async(priv->lookup.resolver,
- priv->lookup.addr,
- priv->lookup.cancellable,
- lookup_callback,
- self);
+ update_system_hostname(self, "lookup finished");
}
static void
update_system_hostname(NMPolicy *self, const char *msg)
{
- NMPolicyPrivate * priv = NM_POLICY_GET_PRIVATE(self);
- const char * configured_hostname;
- gs_free char * temp_hostname = NULL;
- const char * dhcp_hostname, *p;
- NMIP4Config * ip4_config;
- NMIP6Config * ip6_config;
- gboolean external_hostname = FALSE;
- const NMPlatformIP4Address *addr4;
- const NMPlatformIP6Address *addr6;
- NMDevice * device;
- NMDhcpConfig * dhcp_config;
+ NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
+ const char * configured_hostname;
+ gs_free char * temp_hostname = NULL;
+ const char * dhcp_hostname, *p;
+ gboolean external_hostname = FALSE;
+ NMDhcpConfig * dhcp_config;
+ gs_unref_array GArray *infos = NULL;
+ DeviceHostnameInfo * info;
+ guint i;
+ int IS_IPv4;
g_return_if_fail(self != NULL);
@@ -700,8 +801,6 @@ update_system_hostname(NMPolicy *self, const char *msg)
_LOGT(LOGD_DNS, "set-hostname: updating hostname (%s)", msg);
- nm_clear_g_cancellable(&priv->lookup.cancellable);
-
/* Check if the hostname was set externally to NM, so that in that case
* we can avoid to fallback to the one we got when we started.
* Consider "not specific" hostnames as equal. */
@@ -729,10 +828,9 @@ update_system_hostname(NMPolicy *self, const char *msg)
/* Hostname precedence order:
*
* 1) a configured hostname (from settings)
- * 2) automatic hostname from the default device's config (DHCP, VPN, etc)
- * 3) the last hostname set outside NM
- * 4) reverse-DNS of the best device's IPv4 address
- *
+ * 2) automatic hostname from DHCP of eligible interfaces
+ * 3) reverse-DNS lookup of the first address on eligible interfaces
+ * 4) the last hostname set outside NM
*/
/* Try a persistent hostname first */
@@ -743,40 +841,73 @@ update_system_hostname(NMPolicy *self, const char *msg)
return;
}
- if (priv->default_ac4) {
- /* Grab a hostname out of the device's DHCP4 config */
- dhcp_config = nm_device_get_dhcp_config(get_default_device(self, AF_INET), AF_INET);
- if (dhcp_config) {
- dhcp_hostname = nm_dhcp_config_get_option(dhcp_config, "host_name");
- if (dhcp_hostname && dhcp_hostname[0]) {
- p = nm_str_skip_leading_spaces(dhcp_hostname);
- if (p[0]) {
- _set_hostname(self, p, "from DHCPv4");
- priv->dhcp_hostname = TRUE;
- return;
+ infos = build_device_hostname_infos(self);
+
+ if (infos && _LOGT_ENABLED(LOGD_DNS)) {
+ _LOGT(LOGD_DNS, "device hostname info:");
+ for (i = 0; i < infos->len; i++) {
+ info = &g_array_index(infos, DeviceHostnameInfo, i);
+ _LOGT(LOGD_DNS,
+ " - prio:%4d ipv:%c%c dhcp:%d dns:%d dev:%s",
+ info->priority,
+ info->ip_4 ? '4' : '-',
+ info->ip_6 ? '6' : '-',
+ info->from_dhcp,
+ info->from_dns,
+ nm_device_get_iface(info->device));
+ }
+ }
+
+ for (i = 0; infos && i < infos->len; i++) {
+ info = &g_array_index(infos, DeviceHostnameInfo, i);
+ g_signal_handlers_disconnect_by_func(info->device, device_dns_lookup_done, self);
+ for (IS_IPv4 = 1; IS_IPv4 >= 0; IS_IPv4--) {
+ const int addr_family = IS_IPv4 ? AF_INET : AF_INET6;
+
+ if (info->from_dhcp && info->ip_x[IS_IPv4]) {
+ dhcp_config = nm_device_get_dhcp_config(info->device, addr_family);
+ if (dhcp_config) {
+ dhcp_hostname =
+ nm_dhcp_config_get_option(dhcp_config, IS_IPv4 ? "host_name" : "fqdn_fqdn");
+ if (dhcp_hostname && dhcp_hostname[0]) {
+ p = nm_str_skip_leading_spaces(dhcp_hostname);
+ if (p[0]) {
+ _set_hostname(self, p, IS_IPv4 ? "from DHCPv4" : "from DHCPv6");
+ priv->dhcp_hostname = TRUE;
+ return;
+ }
+ _LOGW(LOGD_DNS,
+ "set-hostname: DHCPv%c-provided hostname '%s' looks invalid; "
+ "ignoring it",
+ nm_utils_addr_family_to_char(addr_family),
+ dhcp_hostname);
+ }
}
- _LOGW(LOGD_DNS,
- "set-hostname: DHCPv4-provided hostname '%s' looks invalid; ignoring it",
- dhcp_hostname);
}
}
- }
- if (priv->default_ac6) {
- /* Grab a hostname out of the device's DHCP6 config */
- dhcp_config = nm_device_get_dhcp_config(get_default_device(self, AF_INET6), AF_INET6);
- if (dhcp_config) {
- dhcp_hostname = nm_dhcp_config_get_option(dhcp_config, "fqdn_fqdn");
- if (dhcp_hostname && dhcp_hostname[0]) {
- p = nm_str_skip_leading_spaces(dhcp_hostname);
- if (p[0]) {
- _set_hostname(self, p, "from DHCPv6");
- priv->dhcp_hostname = TRUE;
- return;
+ if (priv->hostname_mode != NM_POLICY_HOSTNAME_MODE_DHCP) {
+ for (IS_IPv4 = 1; IS_IPv4 >= 0; IS_IPv4--) {
+ const int addr_family = IS_IPv4 ? AF_INET : AF_INET6;
+
+ if (info->from_dns && info->ip_x[IS_IPv4]) {
+ const char *result;
+ gboolean wait;
+
+ result =
+ nm_device_get_hostname_from_dns_lookup(info->device, addr_family, &wait);
+ if (result) {
+ _set_hostname(self, result, "from address lookup");
+ return;
+ }
+ if (wait) {
+ g_signal_connect(info->device,
+ NM_DEVICE_DNS_LOOKUP_DONE,
+ (GCallback) device_dns_lookup_done,
+ self);
+ return;
+ }
}
- _LOGW(LOGD_DNS,
- "set-hostname: DHCPv6-provided hostname '%s' looks invalid; ignoring it",
- dhcp_hostname);
}
}
}
@@ -800,14 +931,6 @@ update_system_hostname(NMPolicy *self, const char *msg)
priv->dhcp_hostname = FALSE;
- if (!priv->default_ac4 && !priv->default_ac6) {
- /* No best device; fall back to the last hostname set externally
- * to NM or if there wasn't one, 'localhost.localdomain'
- */
- _set_hostname(self, priv->orig_hostname, "no default device");
- return;
- }
-
/* If no automatically-configured hostname, try using the last hostname
* set externally to NM
*/
@@ -816,30 +939,7 @@ update_system_hostname(NMPolicy *self, const char *msg)
return;
}
- /* No configured hostname, no automatically determined hostname, and no
- * bootup hostname. Start reverse DNS of the current IPv4 or IPv6 address.
- */
- device = get_default_device(self, AF_INET);
- ip4_config = device ? nm_device_get_ip4_config(device) : NULL;
-
- device = get_default_device(self, AF_INET6);
- ip6_config = device ? nm_device_get_ip6_config(device) : NULL;
-
- if (ip4_config && (addr4 = nm_ip4_config_get_first_address(ip4_config))) {
- g_clear_object(&priv->lookup.addr);
- priv->lookup.addr =
- g_inet_address_new_from_bytes((guint8 *) &addr4->address, G_SOCKET_FAMILY_IPV4);
- } else if (ip6_config && (addr6 = nm_ip6_config_get_first_address(ip6_config))) {
- g_clear_object(&priv->lookup.addr);
- priv->lookup.addr =
- g_inet_address_new_from_bytes((guint8 *) &addr6->address, G_SOCKET_FAMILY_IPV6);
- } else {
- /* No valid IP config; fall back to localhost.localdomain */
- _set_hostname(self, NULL, "no IP config");
- return;
- }
-
- lookup_by_address(self);
+ _set_hostname(self, NULL, "no hostname found");
}
static void
@@ -1801,6 +1901,8 @@ device_state_changed(NMDevice * device,
switch (new_state) {
case NM_DEVICE_STATE_FAILED:
+ g_signal_handlers_disconnect_by_func(device, device_dns_lookup_done, self);
+
/* Mark the connection invalid if it failed during activation so that
* it doesn't get automatically chosen over and over and over again.
*/
@@ -1939,6 +2041,8 @@ device_state_changed(NMDevice * device,
ip6_remove_device_prefix_delegations(self, device);
break;
case NM_DEVICE_STATE_DISCONNECTED:
+ g_signal_handlers_disconnect_by_func(device, device_dns_lookup_done, self);
+
/* Reset retry counts for a device's connections when carrier on; if cable
* was unplugged and plugged in again, we should try to reconnect.
*/
@@ -2412,40 +2516,6 @@ firewall_state_changed(NMFirewallManager *manager, gboolean initialized_now, gpo
}
static void
-dns_config_changed(NMDnsManager *dns_manager, gpointer user_data)
-{
- NMPolicy * self = (NMPolicy *) user_data;
- NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
-
- /* Restart a thread for reverse-DNS lookup after we are signalled that
- * DNS changed. Because the result from a previous run may not be right
- * (race in updating DNS and doing the reverse lookup).
- */
-
- nm_clear_g_cancellable(&priv->lookup.cancellable);
-
- /* Re-start the hostname lookup thread if we don't have hostname yet. */
- if (priv->lookup.addr) {
- char * str = NULL;
- gs_free char *hostname = NULL;
-
- /* Check if the hostname was externally set */
- if ((hostname = _get_hostname(self)) && nm_utils_is_specific_hostname(hostname)
- && !nm_streq0(hostname, priv->last_hostname)) {
- g_clear_object(&priv->lookup.addr);
- return;
- }
-
- _LOGD(LOGD_DNS,
- "restarting reverse-lookup thread for address %s",
- (str = g_inet_address_to_string(priv->lookup.addr)));
- g_free(str);
-
- lookup_by_address(self);
- }
-}
-
-static void
connection_updated(NMSettings * settings,
NMSettingsConnection *connection,
guint update_reason_u,
@@ -2677,12 +2747,6 @@ constructed(GObject *object)
priv->dns_manager = g_object_ref(nm_dns_manager_get());
nm_dns_manager_set_initial_hostname(priv->dns_manager, priv->orig_hostname);
- priv->config_changed_id = g_signal_connect(priv->dns_manager,
- NM_DNS_MANAGER_CONFIG_CHANGED,
- G_CALLBACK(dns_config_changed),
- self);
-
- priv->lookup.resolver = g_resolver_get_default();
g_signal_connect(priv->hostname_manager,
"notify::" NM_HOSTNAME_MANAGER_HOSTNAME,
@@ -2764,10 +2828,6 @@ dispose(GObject *object)
NMDevice * device;
ActivateData * data, *data_safe;
- nm_clear_g_cancellable(&priv->lookup.cancellable);
- g_clear_object(&priv->lookup.addr);
- g_clear_object(&priv->lookup.resolver);
-
nm_clear_g_object(&priv->default_ac4);
nm_clear_g_object(&priv->default_ac6);
nm_clear_g_object(&priv->activating_ac4);
@@ -2790,10 +2850,7 @@ dispose(GObject *object)
g_clear_object(&priv->agent_mgr);
}
- if (priv->dns_manager) {
- nm_clear_g_signal_handler(priv->dns_manager, &priv->config_changed_id);
- g_clear_object(&priv->dns_manager);
- }
+ g_clear_object(&priv->dns_manager);
g_hash_table_iter_init(&h_iter, priv->devices);
if (g_hash_table_iter_next(&h_iter, (gpointer *) &device, NULL)) {
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index b377c85e7a..4e98ae9e99 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -8281,13 +8281,6 @@ wifi_get_capabilities(NMPlatform *platform, int ifindex, NMDeviceWifiCapabilitie
return TRUE;
}
-static gboolean
-wifi_get_bssid(NMPlatform *platform, int ifindex, guint8 *bssid)
-{
- WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
- return nm_wifi_utils_get_bssid(wifi_data, bssid);
-}
-
static guint32
wifi_get_frequency(NMPlatform *platform, int ifindex)
{
@@ -8296,17 +8289,14 @@ wifi_get_frequency(NMPlatform *platform, int ifindex)
}
static gboolean
-wifi_get_quality(NMPlatform *platform, int ifindex)
-{
- WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
- return nm_wifi_utils_get_qual(wifi_data);
-}
-
-static guint32
-wifi_get_rate(NMPlatform *platform, int ifindex)
+wifi_get_station(NMPlatform * platform,
+ int ifindex,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
{
WIFI_GET_WIFI_DATA_NETNS(wifi_data, platform, ifindex, FALSE);
- return nm_wifi_utils_get_rate(wifi_data);
+ return nm_wifi_utils_get_station(wifi_data, out_bssid, out_quality, out_rate);
}
static NM80211Mode
@@ -9669,10 +9659,8 @@ nm_linux_platform_class_init(NMLinuxPlatformClass *klass)
platform_class->infiniband_partition_delete = infiniband_partition_delete;
platform_class->wifi_get_capabilities = wifi_get_capabilities;
- platform_class->wifi_get_bssid = wifi_get_bssid;
platform_class->wifi_get_frequency = wifi_get_frequency;
- platform_class->wifi_get_quality = wifi_get_quality;
- platform_class->wifi_get_rate = wifi_get_rate;
+ platform_class->wifi_get_station = wifi_get_station;
platform_class->wifi_get_mode = wifi_get_mode;
platform_class->wifi_set_mode = wifi_set_mode;
platform_class->wifi_set_powersave = wifi_set_powersave;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 7969206cba..cd58211594 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -3051,16 +3051,6 @@ nm_platform_wifi_get_capabilities(NMPlatform *self, int ifindex, NMDeviceWifiCap
return klass->wifi_get_capabilities(self, ifindex, caps);
}
-gboolean
-nm_platform_wifi_get_bssid(NMPlatform *self, int ifindex, guint8 *bssid)
-{
- _CHECK_SELF(self, klass, FALSE);
-
- g_return_val_if_fail(ifindex > 0, FALSE);
-
- return klass->wifi_get_bssid(self, ifindex, bssid);
-}
-
guint32
nm_platform_wifi_get_frequency(NMPlatform *self, int ifindex)
{
@@ -3071,24 +3061,18 @@ nm_platform_wifi_get_frequency(NMPlatform *self, int ifindex)
return klass->wifi_get_frequency(self, ifindex);
}
-int
-nm_platform_wifi_get_quality(NMPlatform *self, int ifindex)
-{
- _CHECK_SELF(self, klass, 0);
-
- g_return_val_if_fail(ifindex > 0, 0);
-
- return klass->wifi_get_quality(self, ifindex);
-}
-
-guint32
-nm_platform_wifi_get_rate(NMPlatform *self, int ifindex)
+gboolean
+nm_platform_wifi_get_station(NMPlatform * self,
+ int ifindex,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
{
- _CHECK_SELF(self, klass, 0);
+ _CHECK_SELF(self, klass, FALSE);
- g_return_val_if_fail(ifindex > 0, 0);
+ g_return_val_if_fail(ifindex > 0, FALSE);
- return klass->wifi_get_rate(self, ifindex);
+ return klass->wifi_get_station(self, ifindex, out_bssid, out_quality, out_rate);
}
NM80211Mode
@@ -3746,7 +3730,7 @@ _addr_array_clean_expired(int addr_family,
}
#endif
- if (addr_family == AF_INET6 && NM_FLAGS_HAS(a->n_ifa_flags, IFA_F_TEMPORARY)) {
+ if (!NM_IS_IPv4(addr_family) && NM_FLAGS_HAS(a->n_ifa_flags, IFA_F_TEMPORARY)) {
/* temporary addresses are never added explicitly by NetworkManager but
* kernel adds them via mngtempaddr flag.
*
@@ -3987,7 +3971,7 @@ nm_platform_ip_address_sync(NMPlatform *self,
GPtrArray * addresses_prune)
{
const gint32 now = nm_utils_get_monotonic_timestamp_sec();
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
gs_unref_hashtable GHashTable *known_addresses_idx = NULL;
GPtrArray * plat_addresses;
GHashTable * known_subnets = NULL;
@@ -4336,7 +4320,7 @@ nm_platform_ip_address_get_prune_list(NMPlatform *self,
int ifindex,
gboolean exclude_ipv6_temporary_addrs)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMDedupMultiHeadEntry *head_entry;
NMPLookup lookup;
GPtrArray * result;
@@ -4388,10 +4372,7 @@ nm_platform_ip_route_get_prune_list(NMPlatform * self,
NM_IP_ROUTE_TABLE_SYNC_MODE_FULL,
NM_IP_ROUTE_TABLE_SYNC_MODE_ALL));
- nmp_lookup_init_object(&lookup,
- addr_family == AF_INET ? NMP_OBJECT_TYPE_IP4_ROUTE
- : NMP_OBJECT_TYPE_IP6_ROUTE,
- ifindex);
+ nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ROUTE(NM_IS_IPv4(addr_family)), ifindex);
head_entry = nm_platform_lookup(self, &lookup);
if (!head_entry)
return NULL;
@@ -4447,6 +4428,7 @@ nm_platform_ip_route_sync(NMPlatform *self,
GPtrArray * routes_prune,
GPtrArray **out_temporary_not_available)
{
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMPlatformVTableRoute *vt;
gs_unref_hashtable GHashTable *routes_idx = NULL;
const NMPObject * conf_o;
@@ -4456,10 +4438,8 @@ nm_platform_ip_route_sync(NMPlatform *self,
gboolean success = TRUE;
char sbuf1[sizeof(_nm_utils_to_string_buffer)];
char sbuf2[sizeof(_nm_utils_to_string_buffer)];
- const gboolean IS_IPv4 = (addr_family == AF_INET);
nm_assert(NM_IS_PLATFORM(self));
- nm_assert(NM_IN_SET(addr_family, AF_INET, AF_INET6));
nm_assert(ifindex > 0);
vt = &nm_platform_vtable_route.vx[IS_IPv4];
@@ -4671,9 +4651,9 @@ sync_route_add:
prune_o = routes_prune->pdata[i];
- nm_assert((addr_family == AF_INET
+ nm_assert((NM_IS_IPv4(addr_family)
&& NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP4_ROUTE)
- || (addr_family == AF_INET6
+ || (!NM_IS_IPv4(addr_family)
&& NMP_OBJECT_GET_TYPE(prune_o) == NMP_OBJECT_TYPE_IP6_ROUTE));
if (routes_idx && g_hash_table_lookup(routes_idx, prune_o))
@@ -4816,8 +4796,8 @@ _ip_route_add(NMPlatform *self, NMPNlmFlags flags, int addr_family, gconstpointe
_LOG3D("route: %-10s IPv%c route: %s",
_nmp_nlm_flag_to_string(flags & NMP_NLM_FLAG_FMASK),
nm_utils_addr_family_to_char(addr_family),
- addr_family == AF_INET ? nm_platform_ip4_route_to_string(route, sbuf, sizeof(sbuf))
- : nm_platform_ip6_route_to_string(route, sbuf, sizeof(sbuf)));
+ NM_IS_IPv4(addr_family) ? nm_platform_ip4_route_to_string(route, sbuf, sizeof(sbuf))
+ : nm_platform_ip6_route_to_string(route, sbuf, sizeof(sbuf)));
return klass->ip_route_add(self, flags, addr_family, route);
}
@@ -5647,7 +5627,7 @@ nm_platform_lnk_bridge_to_string(const NMPlatformLnkBridge *lnk, char *buf, gsiz
lnk->vlan_protocol,
(int) lnk->vlan_stats_enabled,
lnk->group_fwd_mask,
- NM_ETHER_ADDR_FORMAT_VAL(lnk->group_addr),
+ NM_ETHER_ADDR_FORMAT_VAL(&lnk->group_addr),
(int) lnk->mcast_snooping,
lnk->mcast_router,
(int) lnk->mcast_query_use_ifaddr,
@@ -6272,11 +6252,16 @@ nm_platform_ip4_address_to_string(const NMPlatformIP4Address *address, char *buf
"%s" /* label */
" src %s"
"%s" /* external */
+ "%s" /* ip4acd_not_ready */
"",
s_address,
address->plen,
- broadcast_address ? " brd " : "",
- broadcast_address ? _nm_utils_inet4_ntop(broadcast_address, str_broadcast) : "",
+ broadcast_address != 0u || address->use_ip4_broadcast_address
+ ? (address->use_ip4_broadcast_address ? " brd " : " brd* ")
+ : "",
+ broadcast_address != 0u || address->use_ip4_broadcast_address
+ ? _nm_utils_inet4_ntop(broadcast_address, str_broadcast)
+ : "",
str_lft_p,
str_pref_p,
str_time_p,
@@ -6285,7 +6270,8 @@ nm_platform_ip4_address_to_string(const NMPlatformIP4Address *address, char *buf
_to_string_ifa_flags(address->n_ifa_flags, s_flags, sizeof(s_flags)),
str_label,
nmp_utils_ip_config_source_to_string(address->addr_source, s_source, sizeof(s_source)),
- address->external ? " ext" : "");
+ address->external ? " ext" : "",
+ address->ip4acd_not_ready ? " ip4acd-not-ready" : "");
g_free(str_peer);
return buf;
}
@@ -6515,7 +6501,9 @@ nm_platform_ip4_route_to_string(const NMPlatformIP4Route *route, char *buf, gsiz
route->plen,
s_gateway,
str_dev,
- route->metric_any ? "??" : nm_sprintf_buf(str_metric, "%u", route->metric),
+ route->metric_any
+ ? (route->metric ? nm_sprintf_buf(str_metric, "??+%u", route->metric) : "??")
+ : nm_sprintf_buf(str_metric, "%u", route->metric),
route->mss,
nmp_utils_ip_config_source_to_string(route->rt_source, s_source, sizeof(s_source)),
_rtm_flags_to_string_full(str_rtm_flags, sizeof(str_rtm_flags), route->r_rtm_flags),
@@ -6639,7 +6627,9 @@ nm_platform_ip6_route_to_string(const NMPlatformIP6Route *route, char *buf, gsiz
route->plen,
s_gateway,
str_dev,
- route->metric_any ? "??" : nm_sprintf_buf(str_metric, "%u", route->metric),
+ route->metric_any
+ ? (route->metric ? nm_sprintf_buf(str_metric, "??+%u", route->metric) : "??")
+ : nm_sprintf_buf(str_metric, "%u", route->metric),
route->mss,
nmp_utils_ip_config_source_to_string(route->rt_source, s_source, sizeof(s_source)),
route->src_plen || !IN6_IS_ADDR_UNSPECIFIED(&route->src)
@@ -7841,7 +7831,7 @@ nm_platform_ip4_address_hash_update(const NMPlatformIP4Address *obj, NMHashState
nm_hash_update_vals(h,
obj->ifindex,
obj->addr_source,
- nm_platform_ip4_broadcast_address_from_addr(obj),
+ obj->use_ip4_broadcast_address ? obj->broadcast_address : ((in_addr_t) 0u),
obj->timestamp,
obj->lifetime,
obj->preferred,
@@ -7849,7 +7839,10 @@ nm_platform_ip4_address_hash_update(const NMPlatformIP4Address *obj, NMHashState
obj->plen,
obj->address,
obj->peer_address,
- NM_HASH_COMBINE_BOOLS(guint8, obj->external));
+ NM_HASH_COMBINE_BOOLS(guint8,
+ obj->external,
+ obj->use_ip4_broadcast_address,
+ obj->ip4acd_not_ready));
nm_hash_update_strarr(h, obj->label);
}
@@ -7861,8 +7854,9 @@ nm_platform_ip4_address_cmp(const NMPlatformIP4Address *a, const NMPlatformIP4Ad
NM_CMP_FIELD(a, b, address);
NM_CMP_FIELD(a, b, plen);
NM_CMP_FIELD(a, b, peer_address);
- NM_CMP_DIRECT(nm_platform_ip4_broadcast_address_from_addr(a),
- nm_platform_ip4_broadcast_address_from_addr(b));
+ NM_CMP_FIELD_UNSAFE(a, b, use_ip4_broadcast_address);
+ if (a->use_ip4_broadcast_address)
+ NM_CMP_FIELD(a, b, broadcast_address);
NM_CMP_FIELD(a, b, addr_source);
NM_CMP_FIELD(a, b, timestamp);
NM_CMP_FIELD(a, b, lifetime);
@@ -7870,6 +7864,7 @@ nm_platform_ip4_address_cmp(const NMPlatformIP4Address *a, const NMPlatformIP4Ad
NM_CMP_FIELD(a, b, n_ifa_flags);
NM_CMP_FIELD_STR(a, b, label);
NM_CMP_FIELD_UNSAFE(a, b, external);
+ NM_CMP_FIELD_UNSAFE(a, b, ip4acd_not_ready);
return 0;
}
@@ -7922,7 +7917,7 @@ nm_platform_ip4_route_hash_update(const NMPlatformIP4Route *obj,
nm_platform_ip_route_get_effective_table(NM_PLATFORM_IP_ROUTE_CAST(obj)),
nm_utils_ip4_address_clear_host_address(obj->network, obj->plen),
obj->plen,
- nm_platform_ip4_route_get_effective_metric(obj),
+ obj->metric,
obj->tos,
NM_HASH_COMBINE_BOOLS(guint8, obj->metric_any, obj->table_any));
break;
@@ -7933,7 +7928,7 @@ nm_platform_ip4_route_hash_update(const NMPlatformIP4Route *obj,
nm_platform_ip_route_get_effective_table(NM_PLATFORM_IP_ROUTE_CAST(obj)),
nm_utils_ip4_address_clear_host_address(obj->network, obj->plen),
obj->plen,
- nm_platform_ip4_route_get_effective_metric(obj),
+ obj->metric,
obj->tos,
/* on top of WEAK_ID: */
obj->ifindex,
@@ -7965,7 +7960,7 @@ nm_platform_ip4_route_hash_update(const NMPlatformIP4Route *obj,
obj->ifindex,
nm_utils_ip4_address_clear_host_address(obj->network, obj->plen),
obj->plen,
- nm_platform_ip4_route_get_effective_metric(obj),
+ obj->metric,
obj->gateway,
nmp_utils_ip_config_source_round_trip_rtprot(obj->rt_source),
_ip_route_scope_inv_get_normalized(obj),
@@ -7994,7 +7989,7 @@ nm_platform_ip4_route_hash_update(const NMPlatformIP4Route *obj,
obj->ifindex,
obj->network,
obj->plen,
- nm_platform_ip4_route_get_effective_metric(obj),
+ obj->metric,
obj->gateway,
obj->rt_source,
obj->scope_inv,
@@ -8034,8 +8029,7 @@ nm_platform_ip4_route_cmp(const NMPlatformIP4Route *a,
NM_CMP_DIRECT_IN4ADDR_SAME_PREFIX(a->network, b->network, MIN(a->plen, b->plen));
NM_CMP_FIELD(a, b, plen);
NM_CMP_FIELD_UNSAFE(a, b, metric_any);
- if (!a->metric_any)
- NM_CMP_FIELD(a, b, metric);
+ NM_CMP_FIELD(a, b, metric);
NM_CMP_FIELD(a, b, tos);
if (cmp_type == NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID) {
NM_CMP_FIELD(a, b, ifindex);
@@ -8076,8 +8070,7 @@ nm_platform_ip4_route_cmp(const NMPlatformIP4Route *a,
NM_CMP_FIELD(a, b, network);
NM_CMP_FIELD(a, b, plen);
NM_CMP_FIELD_UNSAFE(a, b, metric_any);
- if (!a->metric_any)
- NM_CMP_FIELD(a, b, metric);
+ NM_CMP_FIELD(a, b, metric);
NM_CMP_FIELD(a, b, gateway);
if (cmp_type == NM_PLATFORM_IP_ROUTE_CMP_TYPE_SEMANTICALLY) {
NM_CMP_DIRECT(nmp_utils_ip_config_source_round_trip_rtprot(a->rt_source),
@@ -8125,7 +8118,7 @@ nm_platform_ip6_route_hash_update(const NMPlatformIP6Route *obj,
nm_platform_ip_route_get_effective_table(NM_PLATFORM_IP_ROUTE_CAST(obj)),
*nm_utils_ip6_address_clear_host_address(&a1, &obj->network, obj->plen),
obj->plen,
- nm_platform_ip6_route_get_effective_metric(obj),
+ obj->metric,
*nm_utils_ip6_address_clear_host_address(&a2, &obj->src, obj->src_plen),
obj->src_plen,
NM_HASH_COMBINE_BOOLS(guint8, obj->metric_any, obj->table_any));
@@ -8137,7 +8130,7 @@ nm_platform_ip6_route_hash_update(const NMPlatformIP6Route *obj,
nm_platform_ip_route_get_effective_table(NM_PLATFORM_IP_ROUTE_CAST(obj)),
*nm_utils_ip6_address_clear_host_address(&a1, &obj->network, obj->plen),
obj->plen,
- nm_platform_ip6_route_get_effective_metric(obj),
+ obj->metric,
*nm_utils_ip6_address_clear_host_address(&a2, &obj->src, obj->src_plen),
obj->src_plen,
NM_HASH_COMBINE_BOOLS(guint8, obj->metric_any, obj->table_any),
@@ -8153,7 +8146,7 @@ nm_platform_ip6_route_hash_update(const NMPlatformIP6Route *obj,
obj->ifindex,
*nm_utils_ip6_address_clear_host_address(&a1, &obj->network, obj->plen),
obj->plen,
- nm_platform_ip6_route_get_effective_metric(obj),
+ obj->metric,
obj->gateway,
obj->pref_src,
*nm_utils_ip6_address_clear_host_address(&a2, &obj->src, obj->src_plen),
@@ -8182,7 +8175,7 @@ nm_platform_ip6_route_hash_update(const NMPlatformIP6Route *obj,
obj->table_coerced,
obj->ifindex,
obj->network,
- nm_platform_ip6_route_get_effective_metric(obj),
+ obj->metric,
obj->gateway,
obj->pref_src,
obj->src,
@@ -8223,8 +8216,7 @@ nm_platform_ip6_route_cmp(const NMPlatformIP6Route *a,
NM_CMP_DIRECT_IN6ADDR_SAME_PREFIX(&a->network, &b->network, MIN(a->plen, b->plen));
NM_CMP_FIELD(a, b, plen);
NM_CMP_FIELD_UNSAFE(a, b, metric_any);
- if (!a->metric_any)
- NM_CMP_FIELD(a, b, metric);
+ NM_CMP_FIELD(a, b, metric);
NM_CMP_DIRECT_IN6ADDR_SAME_PREFIX(&a->src, &b->src, MIN(a->src_plen, b->src_plen));
NM_CMP_FIELD(a, b, src_plen);
if (cmp_type == NM_PLATFORM_IP_ROUTE_CMP_TYPE_ID) {
@@ -8249,8 +8241,7 @@ nm_platform_ip6_route_cmp(const NMPlatformIP6Route *a,
NM_CMP_FIELD_IN6ADDR(a, b, network);
NM_CMP_FIELD(a, b, plen);
NM_CMP_FIELD_UNSAFE(a, b, metric_any);
- if (!a->metric_any)
- NM_CMP_FIELD(a, b, metric);
+ NM_CMP_FIELD(a, b, metric);
NM_CMP_FIELD_IN6ADDR(a, b, gateway);
NM_CMP_FIELD_IN6ADDR(a, b, pref_src);
if (cmp_type == NM_PLATFORM_IP_ROUTE_CMP_TYPE_SEMANTICALLY) {
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index a1314000c3..25a741166e 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -322,10 +322,15 @@ typedef enum {
guint8 plen; \
\
/* FIXME(l3cfg): the external marker won't be necessary anymore, because we only
- * merge addresses we care about, and ignore (don't remove) external addresses. */ \
+ * merge addresses we care about, and ignore (don't remove) external addresses. */ \
bool external : 1; \
\
bool use_ip4_broadcast_address : 1; \
+ \
+ /* Whether the address is ready to be configured. By default, an address is, but this
+ * flag may indicate that the address is just for tracking purpose only, but the ACD
+ * state is not yet ready for the address to be configured. */ \
+ bool ip4acd_not_ready : 1; \
;
/**
@@ -410,9 +415,9 @@ typedef union {
* configures addresses. */
#define NM_PLATFORM_ROUTE_METRIC_IP4_DEVICE_ROUTE ((guint32) 0u)
-#define __NMPlatformIPRoute_COMMON \
- __NMPlatformObjWithIfindex_COMMON; \
- \
+#define __NMPlatformIPRoute_COMMON \
+ __NMPlatformObjWithIfindex_COMMON; \
+ \
/* The NMIPConfigSource. For routes that we receive from cache this corresponds
* to the rtm_protocol field (and is one of the NM_IP_CONFIG_SOURCE_RTPROT_* values).
* When adding a route, the source will be coerced to the protocol using
@@ -424,11 +429,11 @@ typedef union {
*
* When deleting an IPv4/IPv6 route, the rtm_protocol field must match (even
* if it is not part of the primary key for IPv6) -- unless rtm_protocol is set
- * to zero, in which case the first matching route (with proto ignored) is deleted. */ \
- NMIPConfigSource rt_source; \
- \
- guint8 plen; \
- \
+ * to zero, in which case the first matching route (with proto ignored) is deleted. */ \
+ NMIPConfigSource rt_source; \
+ \
+ guint8 plen; \
+ \
/* RTA_METRICS:
*
* For IPv4 routes, these properties are part of their
@@ -439,24 +444,29 @@ typedef union {
*
* When deleting a route, kernel seems to ignore the RTA_METRICS properties.
* That is a problem/bug for IPv4 because you cannot explicitly select which
- * route to delete. Kernel just picks the first. See rh#1475642. */ \
- \
- /* RTA_METRICS.RTAX_LOCK (iproute2: "lock" arguments) */ \
- bool lock_window : 1; \
- bool lock_cwnd : 1; \
- bool lock_initcwnd : 1; \
- bool lock_initrwnd : 1; \
- bool lock_mtu : 1; \
- \
- /* if TRUE, the "metric" field gets ignored and can be overridden with settings from
- * the device. This is to track routes that should be configured (e.g. from a DHCP
- * lease), but where the actual metric is determined by NMDevice. */ \
- bool metric_any : 1; \
- \
+ * route to delete. Kernel just picks the first. See rh#1475642. */ \
+ \
+ /* RTA_METRICS.RTAX_LOCK (iproute2: "lock" arguments) */ \
+ bool lock_window : 1; \
+ bool lock_cwnd : 1; \
+ bool lock_initcwnd : 1; \
+ bool lock_initrwnd : 1; \
+ bool lock_mtu : 1; \
+ \
+ /* if TRUE, the "metric" field is interpreted as an offset that is added to a default
+ * metric. For example, form a DHCP lease we don't know the actually used metric, because
+ * that is determined by upper layers (the configuration). However, we have a default
+ * metric that should be used. So we set "metric_any" to %TRUE, which means to use
+ * the default metric. However, we still treat the "metric" field as an offset that
+ * will be added to the default metric. In most case, you want that "metric" is zero
+ * when setting "metric_any". */ \
+ bool metric_any : 1; \
+ \
/* like "metric_any", the table is determined by other layers of the code.
- * This field overrides "table_coerced" field. */ \
- bool table_any : 1; \
- \
+ * This field overrides "table_coerced" field. If "table_any" is true, then
+ * the "table_coerced" field is ignored (unlike for the metric). */ \
+ bool table_any : 1; \
+ \
/* rtnh_flags
*
* Routes with rtm_flags RTM_F_CLONED are hidden by platform and
@@ -466,44 +476,46 @@ typedef union {
* NOTE: currently we ignore all flags except RTM_F_CLONED
* and RTNH_F_ONLINK.
* We also may not properly consider the flags as part of the ID
- * in route-cmp. */ \
- unsigned r_rtm_flags; \
- \
- /* RTA_METRICS.RTAX_ADVMSS (iproute2: advmss) */ \
- guint32 mss; \
- \
- /* RTA_METRICS.RTAX_WINDOW (iproute2: window) */ \
- guint32 window; \
- \
- /* RTA_METRICS.RTAX_CWND (iproute2: cwnd) */ \
- guint32 cwnd; \
- \
- /* RTA_METRICS.RTAX_INITCWND (iproute2: initcwnd) */ \
- guint32 initcwnd; \
- \
- /* RTA_METRICS.RTAX_INITRWND (iproute2: initrwnd) */ \
- guint32 initrwnd; \
- \
- /* RTA_METRICS.RTAX_MTU (iproute2: mtu) */ \
- guint32 mtu; \
- \
- /* RTA_PRIORITY (iproute2: metric) */ \
- guint32 metric; \
- \
+ * in route-cmp. */ \
+ unsigned r_rtm_flags; \
+ \
+ /* RTA_METRICS.RTAX_ADVMSS (iproute2: advmss) */ \
+ guint32 mss; \
+ \
+ /* RTA_METRICS.RTAX_WINDOW (iproute2: window) */ \
+ guint32 window; \
+ \
+ /* RTA_METRICS.RTAX_CWND (iproute2: cwnd) */ \
+ guint32 cwnd; \
+ \
+ /* RTA_METRICS.RTAX_INITCWND (iproute2: initcwnd) */ \
+ guint32 initcwnd; \
+ \
+ /* RTA_METRICS.RTAX_INITRWND (iproute2: initrwnd) */ \
+ guint32 initrwnd; \
+ \
+ /* RTA_METRICS.RTAX_MTU (iproute2: mtu) */ \
+ guint32 mtu; \
+ \
+ /* RTA_PRIORITY (iproute2: metric)
+ * If "metric_any" is %TRUE, then this is interpreted as an offset that will be
+ * added to a default base metric. In such cases, the offset is usually zero. */ \
+ guint32 metric; \
+ \
/* rtm_table, RTA_TABLE.
*
* This is not the original table ID. Instead, 254 (RT_TABLE_MAIN) and
* zero (RT_TABLE_UNSPEC) are swapped, so that the default is the main
- * table. Use nm_platform_route_table_coerce()/nm_platform_route_table_uncoerce(). */ \
- guint32 table_coerced; \
- \
+ * table. Use nm_platform_route_table_coerce()/nm_platform_route_table_uncoerce(). */ \
+ guint32 table_coerced; \
+ \
/* rtm_type.
*
* This is not the original type, if type_coerced is 0 then
* it means RTN_UNSPEC otherwise the type value is preserved.
- * */ \
- guint8 type_coerced; \
- \
+ * */ \
+ guint8 type_coerced; \
+ \
/*end*/
typedef struct {
@@ -1170,6 +1182,11 @@ typedef struct {
gboolean (*wifi_get_capabilities)(NMPlatform * self,
int ifindex,
NMDeviceWifiCapabilities *caps);
+ gboolean (*wifi_get_station)(NMPlatform * self,
+ int ifindex,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate);
gboolean (*wifi_get_bssid)(NMPlatform *self, int ifindex, guint8 *bssid);
guint32 (*wifi_get_frequency)(NMPlatform *self, int ifindex);
int (*wifi_get_quality)(NMPlatform *self, int ifindex);
@@ -1950,10 +1967,12 @@ gboolean nm_platform_link_tun_get_properties(NMPlatform * self,
gboolean
nm_platform_wifi_get_capabilities(NMPlatform *self, int ifindex, NMDeviceWifiCapabilities *caps);
-gboolean nm_platform_wifi_get_bssid(NMPlatform *self, int ifindex, guint8 *bssid);
guint32 nm_platform_wifi_get_frequency(NMPlatform *self, int ifindex);
-int nm_platform_wifi_get_quality(NMPlatform *self, int ifindex);
-guint32 nm_platform_wifi_get_rate(NMPlatform *self, int ifindex);
+gboolean nm_platform_wifi_get_station(NMPlatform * self,
+ int ifindex,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate);
NM80211Mode nm_platform_wifi_get_mode(NMPlatform *self, int ifindex);
void nm_platform_wifi_set_mode(NMPlatform *self, int ifindex, NM80211Mode mode);
void nm_platform_wifi_set_powersave(NMPlatform *self, int ifindex, guint32 powersave);
@@ -2097,18 +2116,18 @@ static inline guint32
nm_platform_ip4_route_get_effective_metric(const NMPlatformIP4Route *r)
{
nm_assert(r);
- nm_assert(!r->metric_any || r->metric == 0);
- return r->metric_any ? NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP4 : r->metric;
+ return r->metric_any ? nm_add_clamped_u32(NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP4, r->metric)
+ : r->metric;
}
static inline guint32
nm_platform_ip6_route_get_effective_metric(const NMPlatformIP6Route *r)
{
nm_assert(r);
- nm_assert(!r->metric_any || r->metric == 0);
- return r->metric_any ? NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6 : r->metric;
+ return r->metric_any ? nm_add_clamped_u32(NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6, r->metric)
+ : r->metric;
}
static inline guint32
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c
index 6eea732f57..cc18e49527 100644
--- a/src/platform/nmp-object.c
+++ b/src/platform/nmp-object.c
@@ -1098,7 +1098,7 @@ _vt_cmd_obj_to_string_lnk_wireguard(const NMPObject * obj,
g_snprintf(buf, buf_len, __VA_ARGS__); \
return buf; \
} \
- struct _dummy_struct_for_tailing_semicolon
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
_vt_cmd_plobj_to_string_id(link, NMPlatformLink, "%d", obj->ifindex);
@@ -1390,7 +1390,7 @@ _vt_cmd_obj_copy_lnk_wireguard(NMPObject *dst, const NMPObject *src)
cmd \
} \
} \
- struct _dummy_struct_for_tailing_semicolon
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
_vt_cmd_plobj_id_copy(link, NMPlatformLink, { dst->ifindex = src->ifindex; });
@@ -1485,7 +1485,7 @@ nmp_object_id_cmp(const NMPObject *obj1, const NMPObject *obj2)
} \
return 0; \
} \
- struct _dummy_struct_for_tailing_semicolon
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
_vt_cmd_plobj_id_cmp(link, NMPlatformLink, { NM_CMP_FIELD(obj1, obj2, ifindex); });
@@ -1581,7 +1581,7 @@ nmp_object_id_hash(const NMPObject *obj)
cmd; \
} \
} \
- struct _dummy_struct_for_tailing_semicolon
+ _NM_DUMMY_STRUCT_FOR_TRAILING_SEMICOLON
_vt_cmd_plobj_id_hash_update(link, NMPlatformLink, { nm_hash_update_val(h, obj->ifindex); });
diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h
index 58f54dbe0f..5480f8391b 100644
--- a/src/platform/nmp-object.h
+++ b/src/platform/nmp-object.h
@@ -1077,52 +1077,64 @@ nm_platform_dedup_multi_iter_next_obj(NMDedupMultiIter *ipconf_iter,
return has_next;
}
-static inline gboolean
-nm_platform_dedup_multi_iter_next_ip4_address(NMDedupMultiIter * ipconf_iter,
- const NMPlatformIP4Address **out_address)
-{
- gboolean has_next;
-
- has_next = nm_dedup_multi_iter_next(ipconf_iter);
- if (out_address)
- *out_address = has_next ? NMP_OBJECT_CAST_IP4_ADDRESS(ipconf_iter->current->obj) : NULL;
- return has_next;
-}
-
-static inline gboolean
-nm_platform_dedup_multi_iter_next_ip4_route(NMDedupMultiIter * ipconf_iter,
- const NMPlatformIP4Route **out_route)
-{
- gboolean has_next;
-
- has_next = nm_dedup_multi_iter_next(ipconf_iter);
- if (out_route)
- *out_route = has_next ? NMP_OBJECT_CAST_IP4_ROUTE(ipconf_iter->current->obj) : NULL;
- return has_next;
-}
-
-static inline gboolean
-nm_platform_dedup_multi_iter_next_ip6_address(NMDedupMultiIter * ipconf_iter,
- const NMPlatformIP6Address **out_address)
-{
- gboolean has_next;
-
- has_next = nm_dedup_multi_iter_next(ipconf_iter);
- if (out_address)
- *out_address = has_next ? NMP_OBJECT_CAST_IP6_ADDRESS(ipconf_iter->current->obj) : NULL;
- return has_next;
-}
-
-static inline gboolean
-nm_platform_dedup_multi_iter_next_ip6_route(NMDedupMultiIter * ipconf_iter,
- const NMPlatformIP6Route **out_route)
-{
- gboolean has_next;
+#define _nm_platform_dedup_multi_iter_next(ipconf_iter, out_obj, field, ...) \
+ ({ \
+ NMDedupMultiIter *const _ipconf_iter = (ipconf_iter); \
+ const typeof(((NMPObject *) NULL)->field) **const _out_obj = (out_obj); \
+ gboolean _has_next; \
+ \
+ if (G_LIKELY(nm_dedup_multi_iter_next(_ipconf_iter))) { \
+ if (_out_obj) { \
+ *_out_obj = _NMP_OBJECT_CAST(_ipconf_iter->current->obj, field, __VA_ARGS__); \
+ } else { \
+ nm_assert( \
+ NM_IN_SET(NMP_OBJECT_GET_TYPE(_ipconf_iter->current->obj), __VA_ARGS__)); \
+ } \
+ _has_next = TRUE; \
+ } else { \
+ if (_out_obj) \
+ *_out_obj = NULL; \
+ _has_next = FALSE; \
+ } \
+ _has_next; \
+ })
- has_next = nm_dedup_multi_iter_next(ipconf_iter);
- if (out_route)
- *out_route = has_next ? NMP_OBJECT_CAST_IP6_ROUTE(ipconf_iter->current->obj) : NULL;
- return has_next;
-}
+#define nm_platform_dedup_multi_iter_next_ip_address(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip_address, \
+ NMP_OBJECT_TYPE_IP4_ADDRESS, \
+ NMP_OBJECT_TYPE_IP6_ADDRESS)
+
+#define nm_platform_dedup_multi_iter_next_ip4_address(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip4_address, \
+ NMP_OBJECT_TYPE_IP4_ADDRESS)
+
+#define nm_platform_dedup_multi_iter_next_ip6_address(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip6_address, \
+ NMP_OBJECT_TYPE_IP6_ADDRESS)
+
+#define nm_platform_dedup_multi_iter_next_ip_route(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip_route, \
+ NMP_OBJECT_TYPE_IP4_ROUTE, \
+ NMP_OBJECT_TYPE_IP6_ROUTE)
+
+#define nm_platform_dedup_multi_iter_next_ip4_route(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip4_route, \
+ NMP_OBJECT_TYPE_IP4_ROUTE)
+
+#define nm_platform_dedup_multi_iter_next_ip6_route(ipconf_iter, out_obj) \
+ _nm_platform_dedup_multi_iter_next((ipconf_iter), \
+ (out_obj), \
+ ip6_route, \
+ NMP_OBJECT_TYPE_IP6_ROUTE)
#endif /* __NMP_OBJECT_H__ */
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index fb43004630..f5b2128b3b 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -5,13 +5,15 @@
#include "nm-default.h"
+#include "test-common.h"
+
#include <sys/mount.h>
#include <sched.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <linux/if_tun.h>
-#include "test-common.h"
+#include "n-acd/src/n-acd.h"
#define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)"
#define SIGNAL_DATA_ARG(data) \
@@ -87,7 +89,7 @@ nmtstp_platform_ip6_address_get_all(NMPlatform *self, int ifindex)
const NMPlatformIPAddress *
nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family, gconstpointer addr)
{
- const gboolean IS_IPv4 = NM_IS_IPv4(addr_family);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
const NMPlatformIPAddress *found = NULL;
NMDedupMultiIter iter;
const NMPObject * obj;
@@ -99,8 +101,7 @@ nmtstp_platform_ip_address_find(NMPlatform *self, int ifindex, int addr_family,
nm_assert(addr);
nmp_lookup_init_object(&lookup, NMP_OBJECT_TYPE_IP_ADDRESS(IS_IPv4), ifindex);
- nm_platform_iter_obj_for_each(&iter, self, &lookup, &obj)
- {
+ nm_platform_iter_obj_for_each (&iter, self, &lookup, &obj) {
const NMPlatformIPAddress *a = NMP_OBJECT_CAST_IP_ADDRESS(obj);
g_assert(NMP_OBJECT_GET_ADDR_FAMILY(obj) == addr_family);
@@ -1478,7 +1479,7 @@ nmtstp_link_bridge_add(NMPlatform * platform,
lnk->group_fwd_mask != 0
? nm_sprintf_buf(sbuf_gfw, "group_fwd_mask %#x ", lnk->group_fwd_mask)
: "",
- NM_ETHER_ADDR_FORMAT_VAL(lnk->group_addr),
+ NM_ETHER_ADDR_FORMAT_VAL(&lnk->group_addr),
(int) lnk->mcast_snooping,
lnk->mcast_router,
(int) lnk->mcast_query_use_ifaddr,
@@ -2567,3 +2568,145 @@ main(int argc, char **argv)
g_object_unref(NM_PLATFORM_GET);
return result;
}
+
+/*****************************************************************************/
+
+struct _NMTstpAcdDefender {
+ int ifindex;
+ in_addr_t ip_addr;
+ NAcd * nacd;
+ NAcdProbe *probe;
+ GSource * source;
+ gint8 announce_started;
+};
+
+static gboolean
+_l3_acd_nacd_event(int fd, GIOCondition condition, gpointer user_data)
+{
+ NMTstpAcdDefender *defender = user_data;
+ int r;
+
+ r = n_acd_dispatch(defender->nacd);
+ if (r == N_ACD_E_PREEMPTED)
+ r = 0;
+ g_assert_cmpint(r, ==, 0);
+
+ while (TRUE) {
+ NAcdEvent *event;
+
+ r = n_acd_pop_event(defender->nacd, &event);
+ g_assert_cmpint(r, ==, 0);
+ if (!event)
+ return G_SOURCE_CONTINUE;
+
+ switch (event->event) {
+ case N_ACD_EVENT_READY:
+ g_assert_cmpint(defender->announce_started, ==, 0);
+ g_assert(defender->probe == event->ready.probe);
+ defender->announce_started++;
+ _LOGT("acd-defender[" NM_HASH_OBFUSCATE_PTR_FMT "]: start announcing",
+ NM_HASH_OBFUSCATE_PTR(defender));
+ r = n_acd_probe_announce(defender->probe, N_ACD_DEFEND_ALWAYS);
+ g_assert_cmpint(r, ==, 0);
+ break;
+ case N_ACD_EVENT_DEFENDED:
+ g_assert(defender->probe == event->defended.probe);
+ g_assert_cmpint(event->defended.n_sender, ==, ETH_ALEN);
+ _LOGT("acd-defender[" NM_HASH_OBFUSCATE_PTR_FMT
+ "]: defended from " NM_ETHER_ADDR_FORMAT_STR,
+ NM_HASH_OBFUSCATE_PTR(defender),
+ NM_ETHER_ADDR_FORMAT_VAL((const NMEtherAddr *) event->defended.sender));
+ break;
+ case N_ACD_EVENT_USED:
+ case N_ACD_EVENT_CONFLICT:
+ case N_ACD_EVENT_DOWN:
+ default:
+ g_assert_not_reached();
+ break;
+ }
+ }
+}
+
+NMTstpAcdDefender *
+nmtstp_acd_defender_new(int ifindex, in_addr_t ip_addr, const NMEtherAddr *mac_addr)
+{
+ NMTstpAcdDefender * defender;
+ nm_auto(n_acd_config_freep) NAcdConfig * config = NULL;
+ nm_auto(n_acd_unrefp) NAcd * nacd = NULL;
+ nm_auto(n_acd_probe_config_freep) NAcdProbeConfig *probe_config = NULL;
+ NAcdProbe * probe;
+ int fd;
+ int r;
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+
+ g_assert_cmpint(ifindex, >, 0);
+ g_assert(mac_addr);
+
+ r = n_acd_config_new(&config);
+ g_assert_cmpint(r, ==, 0);
+ g_assert(config);
+
+ n_acd_config_set_ifindex(config, ifindex);
+ n_acd_config_set_transport(config, N_ACD_TRANSPORT_ETHERNET);
+ n_acd_config_set_mac(config, (const guint8 *) mac_addr, sizeof(*mac_addr));
+
+ r = n_acd_new(&nacd, config);
+ g_assert_cmpint(r, ==, 0);
+ g_assert(nacd);
+
+ r = n_acd_probe_config_new(&probe_config);
+ g_assert_cmpint(r, ==, 0);
+ g_assert(probe_config);
+
+ n_acd_probe_config_set_ip(probe_config, (struct in_addr){ip_addr});
+ n_acd_probe_config_set_timeout(probe_config, 0);
+
+ r = n_acd_probe(nacd, &probe, probe_config);
+ g_assert_cmpint(r, ==, 0);
+ g_assert(probe);
+
+ defender = g_slice_new(NMTstpAcdDefender);
+ *defender = (NMTstpAcdDefender){
+ .ifindex = ifindex,
+ .ip_addr = ip_addr,
+ .nacd = g_steal_pointer(&nacd),
+ .probe = g_steal_pointer(&probe),
+ };
+
+ _LOGT("acd-defender[" NM_HASH_OBFUSCATE_PTR_FMT
+ "]: new for ifindex=%d, hwaddr=" NM_ETHER_ADDR_FORMAT_STR ", ipaddr=%s",
+ NM_HASH_OBFUSCATE_PTR(defender),
+ ifindex,
+ NM_ETHER_ADDR_FORMAT_VAL(mac_addr),
+ _nm_utils_inet4_ntop(ip_addr, sbuf_addr));
+
+ n_acd_probe_set_userdata(defender->probe, defender);
+
+ n_acd_get_fd(defender->nacd, &fd);
+ g_assert_cmpint(fd, >=, 0);
+
+ defender->source = nm_g_source_attach(nm_g_unix_fd_source_new(fd,
+ G_IO_IN,
+ G_PRIORITY_DEFAULT,
+ _l3_acd_nacd_event,
+ defender,
+ NULL),
+ NULL);
+
+ return defender;
+}
+
+void
+nmtstp_acd_defender_destroy(NMTstpAcdDefender *defender)
+{
+ if (!defender)
+ return;
+
+ _LOGT("acd-defender[" NM_HASH_OBFUSCATE_PTR_FMT "]: destroy", NM_HASH_OBFUSCATE_PTR(defender));
+
+ nm_clear_g_source_inst(&defender->source);
+ nm_clear_pointer(&defender->nacd, n_acd_unref);
+ nm_clear_pointer(&defender->probe, n_acd_probe_free);
+
+ nm_g_slice_free(defender);
+}
diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h
index 1d996f4644..3a4bcb3b66 100644
--- a/src/platform/tests/test-common.h
+++ b/src/platform/tests/test-common.h
@@ -606,5 +606,14 @@ void nmtstp_setup_platform(void);
/*****************************************************************************/
+typedef struct _NMTstpAcdDefender NMTstpAcdDefender;
+
+NMTstpAcdDefender *
+nmtstp_acd_defender_new(int ifindex, in_addr_t ip_addr, const NMEtherAddr *mac_addr);
+
+void nmtstp_acd_defender_destroy(NMTstpAcdDefender *defender);
+
+/*****************************************************************************/
+
void _nmtstp_init_tests(int *argc, char ***argv);
void _nmtstp_setup_tests(void);
diff --git a/src/platform/wifi/nm-wifi-utils-nl80211.c b/src/platform/wifi/nm-wifi-utils-nl80211.c
index dddfa8fafb..457c6b8e5a 100644
--- a/src/platform/wifi/nm-wifi-utils-nl80211.c
+++ b/src/platform/wifi/nm-wifi-utils-nl80211.c
@@ -163,6 +163,7 @@ dispose(GObject *object)
struct nl80211_iface_info {
NM80211Mode mode;
+ uint32_t freq;
};
static int
@@ -193,6 +194,9 @@ nl80211_iface_info_handler(struct nl_msg *msg, void *arg)
break;
}
+ if (tb[NL80211_ATTR_WIPHY_FREQ] != NULL)
+ info->freq = nla_get_u32(tb[NL80211_ATTR_WIPHY_FREQ]);
+
return NL_SKIP;
}
@@ -359,142 +363,19 @@ nla_put_failure:
g_return_val_if_reached(FALSE);
}
-/* @divisor: pass what value @xbm should be divided by to get dBm */
-static guint32
-nl80211_xbm_to_percent(gint32 xbm, guint32 divisor)
-{
-#define NOISE_FLOOR_DBM -90
-#define SIGNAL_MAX_DBM -20
-
- xbm /= divisor;
- xbm = CLAMP(xbm, NOISE_FLOOR_DBM, SIGNAL_MAX_DBM);
-
- return 100
- - 70
- * (((float) SIGNAL_MAX_DBM - (float) xbm)
- / ((float) SIGNAL_MAX_DBM - (float) NOISE_FLOOR_DBM));
-}
-
-struct nl80211_bss_info {
- guint32 freq;
- guint8 bssid[ETH_ALEN];
- guint8 ssid[32];
- guint32 ssid_len;
- guint32 beacon_signal;
- gboolean valid;
-};
-
-#define WLAN_EID_SSID 0
-
-static void
-find_ssid(guint8 *ies, guint32 ies_len, guint8 **ssid, guint32 *ssid_len)
-{
- *ssid = NULL;
- *ssid_len = 0;
-
- while (ies_len > 2 && ies[0] != WLAN_EID_SSID) {
- ies_len -= ies[1] + 2;
- ies += ies[1] + 2;
- }
- if (ies_len < 2)
- return;
- if (ies_len < 2 + ies[1])
- return;
-
- *ssid_len = ies[1];
- *ssid = ies + 2;
-}
-
-static int
-nl80211_bss_dump_handler(struct nl_msg *msg, void *arg)
-{
- static const struct nla_policy bss_policy[] = {
- [NL80211_BSS_TSF] = {.type = NLA_U64},
- [NL80211_BSS_FREQUENCY] = {.type = NLA_U32},
- [NL80211_BSS_BSSID] = {.minlen = ETH_ALEN},
- [NL80211_BSS_BEACON_INTERVAL] = {.type = NLA_U16},
- [NL80211_BSS_CAPABILITY] = {.type = NLA_U16},
- [NL80211_BSS_INFORMATION_ELEMENTS] = {},
- [NL80211_BSS_SIGNAL_MBM] = {.type = NLA_U32},
- [NL80211_BSS_SIGNAL_UNSPEC] = {.type = NLA_U8},
- [NL80211_BSS_STATUS] = {.type = NLA_U32},
- };
- struct nl80211_bss_info *info = arg;
- struct genlmsghdr * gnlh = nlmsg_data(nlmsg_hdr(msg));
- struct nlattr * tb[NL80211_ATTR_MAX + 1];
- struct nlattr * bss[G_N_ELEMENTS(bss_policy)];
- guint32 status;
-
- if (nla_parse_arr(tb, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0)
- return NL_SKIP;
-
- if (tb[NL80211_ATTR_BSS] == NULL)
- return NL_SKIP;
-
- if (nla_parse_nested_arr(bss, tb[NL80211_ATTR_BSS], bss_policy))
- return NL_SKIP;
-
- if (bss[NL80211_BSS_STATUS] == NULL)
- return NL_SKIP;
-
- status = nla_get_u32(bss[NL80211_BSS_STATUS]);
-
- if (status != NL80211_BSS_STATUS_ASSOCIATED && status != NL80211_BSS_STATUS_IBSS_JOINED)
- return NL_SKIP;
-
- if (bss[NL80211_BSS_BSSID] == NULL)
- return NL_SKIP;
- memcpy(info->bssid, nla_data(bss[NL80211_BSS_BSSID]), ETH_ALEN);
-
- if (bss[NL80211_BSS_FREQUENCY])
- info->freq = nla_get_u32(bss[NL80211_BSS_FREQUENCY]);
-
- if (bss[NL80211_BSS_SIGNAL_UNSPEC])
- info->beacon_signal = nla_get_u8(bss[NL80211_BSS_SIGNAL_UNSPEC]);
-
- if (bss[NL80211_BSS_SIGNAL_MBM])
- info->beacon_signal = nl80211_xbm_to_percent(nla_get_u32(bss[NL80211_BSS_SIGNAL_MBM]), 100);
-
- if (bss[NL80211_BSS_INFORMATION_ELEMENTS]) {
- guint8 *ssid;
- guint32 ssid_len;
-
- find_ssid(nla_data(bss[NL80211_BSS_INFORMATION_ELEMENTS]),
- nla_len(bss[NL80211_BSS_INFORMATION_ELEMENTS]),
- &ssid,
- &ssid_len);
- if (ssid && ssid_len && ssid_len <= sizeof(info->ssid)) {
- memcpy(info->ssid, ssid, ssid_len);
- info->ssid_len = ssid_len;
- }
- }
-
- info->valid = TRUE;
-
- return NL_SKIP;
-}
-
-static void
-nl80211_get_bss_info(NMWifiUtilsNl80211 *self, struct nl80211_bss_info *bss_info)
-{
- nm_auto_nlmsg struct nl_msg *msg = NULL;
-
- memset(bss_info, 0, sizeof(*bss_info));
-
- msg = nl80211_alloc_msg(self, NL80211_CMD_GET_SCAN, NLM_F_DUMP);
-
- nl80211_send_and_recv(self, msg, nl80211_bss_dump_handler, bss_info);
-}
-
static guint32
wifi_nl80211_get_freq(NMWifiUtils *data)
{
- NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
- struct nl80211_bss_info bss_info;
+ NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
+ struct nl80211_iface_info iface_info = {};
+ nm_auto_nlmsg struct nl_msg *msg = NULL;
- nl80211_get_bss_info(self, &bss_info);
+ msg = nl80211_alloc_msg(self, NL80211_CMD_GET_INTERFACE, 0);
+
+ if (nl80211_send_and_recv(self, msg, nl80211_iface_info_handler, &iface_info) < 0)
+ return 0;
- return bss_info.freq;
+ return iface_info.freq;
}
static guint32
@@ -513,21 +394,25 @@ wifi_nl80211_find_freq(NMWifiUtils *data, const guint32 *freqs)
return 0;
}
-static gboolean
-wifi_nl80211_get_bssid(NMWifiUtils *data, guint8 *out_bssid)
+/* @divisor: pass what value @xbm should be divided by to get dBm */
+static guint32
+nl80211_xbm_to_percent(gint32 xbm, guint32 divisor)
{
- NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
- struct nl80211_bss_info bss_info;
-
- nl80211_get_bss_info(self, &bss_info);
+#define NOISE_FLOOR_DBM -90
+#define SIGNAL_MAX_DBM -20
- if (bss_info.valid)
- memcpy(out_bssid, bss_info.bssid, ETH_ALEN);
+ xbm /= divisor;
+ xbm = CLAMP(xbm, NOISE_FLOOR_DBM, SIGNAL_MAX_DBM);
- return bss_info.valid;
+ return 100
+ - 70
+ * (((float) SIGNAL_MAX_DBM - (float) xbm)
+ / ((float) SIGNAL_MAX_DBM - (float) NOISE_FLOOR_DBM));
}
struct nl80211_station_info {
+ gboolean valid;
+ guint8 bssid[ETH_ALEN];
guint32 txrate;
gboolean txrate_valid;
guint8 signal;
@@ -535,19 +420,21 @@ struct nl80211_station_info {
};
static int
-nl80211_station_handler(struct nl_msg *msg, void *arg)
+nl80211_station_dump_handler(struct nl_msg *msg, void *arg)
{
static const struct nla_policy stats_policy[] = {
- [NL80211_STA_INFO_INACTIVE_TIME] = {.type = NLA_U32},
- [NL80211_STA_INFO_RX_BYTES] = {.type = NLA_U32},
- [NL80211_STA_INFO_TX_BYTES] = {.type = NLA_U32},
- [NL80211_STA_INFO_RX_PACKETS] = {.type = NLA_U32},
- [NL80211_STA_INFO_TX_PACKETS] = {.type = NLA_U32},
- [NL80211_STA_INFO_SIGNAL] = {.type = NLA_U8},
- [NL80211_STA_INFO_TX_BITRATE] = {.type = NLA_NESTED},
- [NL80211_STA_INFO_LLID] = {.type = NLA_U16},
- [NL80211_STA_INFO_PLID] = {.type = NLA_U16},
- [NL80211_STA_INFO_PLINK_STATE] = {.type = NLA_U8},
+ [NL80211_STA_INFO_INACTIVE_TIME] = {.type = NLA_U32},
+ [NL80211_STA_INFO_RX_BYTES] = {.type = NLA_U32},
+ [NL80211_STA_INFO_TX_BYTES] = {.type = NLA_U32},
+ [NL80211_STA_INFO_RX_PACKETS] = {.type = NLA_U32},
+ [NL80211_STA_INFO_TX_PACKETS] = {.type = NLA_U32},
+ [NL80211_STA_INFO_SIGNAL] = {.type = NLA_U8},
+ [NL80211_STA_INFO_TX_BITRATE] = {.type = NLA_NESTED},
+ [NL80211_STA_INFO_LLID] = {.type = NLA_U16},
+ [NL80211_STA_INFO_PLID] = {.type = NLA_U16},
+ [NL80211_STA_INFO_PLINK_STATE] = {.type = NLA_U8},
+ [NL80211_STA_INFO_STA_FLAGS] = {.minlen = sizeof(struct nl80211_sta_flag_update)},
+ [NL80211_STA_INFO_BEACON_SIGNAL_AVG] = {.type = NLA_U8},
};
static const struct nla_policy rate_policy[] = {
[NL80211_RATE_INFO_BITRATE] = {.type = NLA_U16},
@@ -564,80 +451,76 @@ nl80211_station_handler(struct nl_msg *msg, void *arg)
if (nla_parse_arr(tb, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0)
return NL_SKIP;
+ if (tb[NL80211_ATTR_MAC] == NULL)
+ return NL_SKIP;
+
if (tb[NL80211_ATTR_STA_INFO] == NULL)
return NL_SKIP;
if (nla_parse_nested_arr(sinfo, tb[NL80211_ATTR_STA_INFO], stats_policy))
return NL_SKIP;
- if (sinfo[NL80211_STA_INFO_TX_BITRATE] == NULL)
- return NL_SKIP;
+ if (sinfo[NL80211_STA_INFO_STA_FLAGS] != NULL) {
+ const struct nl80211_sta_flag_update *flags = nla_data(sinfo[NL80211_STA_INFO_STA_FLAGS]);
- if (nla_parse_nested_arr(rinfo, sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy))
- return NL_SKIP;
+ if (flags->mask & ~flags->set & (1 << NL80211_STA_FLAG_ASSOCIATED))
+ return NL_SKIP;
+ }
- if (rinfo[NL80211_RATE_INFO_BITRATE] == NULL)
- return NL_SKIP;
+ memcpy(info->bssid, nla_data(tb[NL80211_ATTR_MAC]), ETH_ALEN);
+ info->valid = TRUE;
- /* convert from nl80211's units of 100kbps to NM's kbps */
- info->txrate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]) * 100;
- info->txrate_valid = TRUE;
+ if (sinfo[NL80211_STA_INFO_TX_BITRATE] != NULL
+ && !nla_parse_nested_arr(rinfo, sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)
+ && rinfo[NL80211_RATE_INFO_BITRATE] != NULL) {
+ /* convert from nl80211's units of 100kbps to NM's kbps */
+ info->txrate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]) * 100;
+ info->txrate_valid = TRUE;
+ }
if (sinfo[NL80211_STA_INFO_SIGNAL] != NULL) {
info->signal =
nl80211_xbm_to_percent((gint8) nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL]), 1);
info->signal_valid = TRUE;
+ } else if (sinfo[NL80211_STA_INFO_BEACON_SIGNAL_AVG] != NULL) {
+ /* Fall back to beacon signal strength */
+ info->signal =
+ nl80211_xbm_to_percent((gint8) nla_get_u8(sinfo[NL80211_STA_INFO_BEACON_SIGNAL_AVG]),
+ 1);
+ info->signal_valid = TRUE;
}
return NL_SKIP;
}
-static void
-nl80211_get_ap_info(NMWifiUtilsNl80211 *self, struct nl80211_station_info *sta_info)
+static gboolean
+wifi_nl80211_get_station(NMWifiUtils *data,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
{
- nm_auto_nlmsg struct nl_msg *msg = NULL;
- struct nl80211_bss_info bss_info;
-
- memset(sta_info, 0, sizeof(*sta_info));
+ NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
+ nm_auto_nlmsg struct nl_msg *msg = NULL;
+ struct nl80211_station_info sta_info = {};
- nl80211_get_bss_info(self, &bss_info);
- if (!bss_info.valid)
- return;
+ msg = nl80211_alloc_msg(self, NL80211_CMD_GET_STATION, NLM_F_DUMP);
- msg = nl80211_alloc_msg(self, NL80211_CMD_GET_STATION, 0);
- NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, bss_info.bssid);
-
- nl80211_send_and_recv(self, msg, nl80211_station_handler, sta_info);
- if (!sta_info->signal_valid) {
- /* Fall back to bss_info signal quality (both are in percent) */
- sta_info->signal = bss_info.beacon_signal;
- }
-
- return;
-
-nla_put_failure:
- g_return_if_reached();
-}
+ nl80211_send_and_recv(self, msg, nl80211_station_dump_handler, &sta_info);
-static guint32
-wifi_nl80211_get_rate(NMWifiUtils *data)
-{
- NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
- struct nl80211_station_info sta_info;
+ if (!sta_info.valid || (out_quality && !sta_info.signal_valid)
+ || (out_rate && !sta_info.txrate_valid))
+ return FALSE;
- nl80211_get_ap_info(self, &sta_info);
+ if (out_bssid)
+ memcpy(out_bssid, sta_info.bssid, ETH_ALEN);
- return sta_info.txrate;
-}
+ if (out_quality)
+ *out_quality = sta_info.signal;
-static int
-wifi_nl80211_get_qual(NMWifiUtils *data)
-{
- NMWifiUtilsNl80211 * self = (NMWifiUtilsNl80211 *) data;
- struct nl80211_station_info sta_info;
+ if (out_rate)
+ *out_rate = sta_info.txrate;
- nl80211_get_ap_info(self, &sta_info);
- return sta_info.signal;
+ return TRUE;
}
static gboolean
@@ -952,9 +835,7 @@ nm_wifi_utils_nl80211_class_init(NMWifiUtilsNl80211Class *klass)
wifi_utils_class->set_wake_on_wlan = wifi_nl80211_set_wake_on_wlan,
wifi_utils_class->get_freq = wifi_nl80211_get_freq;
wifi_utils_class->find_freq = wifi_nl80211_find_freq;
- wifi_utils_class->get_bssid = wifi_nl80211_get_bssid;
- wifi_utils_class->get_rate = wifi_nl80211_get_rate;
- wifi_utils_class->get_qual = wifi_nl80211_get_qual;
+ wifi_utils_class->get_station = wifi_nl80211_get_station;
wifi_utils_class->indicate_addressing_running = wifi_nl80211_indicate_addressing_running;
wifi_utils_class->get_mesh_channel = wifi_nl80211_get_mesh_channel;
wifi_utils_class->set_mesh_channel = wifi_nl80211_set_mesh_channel;
diff --git a/src/platform/wifi/nm-wifi-utils-private.h b/src/platform/wifi/nm-wifi-utils-private.h
index 1a5303a668..703ef66a82 100644
--- a/src/platform/wifi/nm-wifi-utils-private.h
+++ b/src/platform/wifi/nm-wifi-utils-private.h
@@ -31,15 +31,17 @@ typedef struct {
/* Return first supported frequency in the zero-terminated list */
guint32 (*find_freq)(NMWifiUtils *data, const guint32 *freqs);
- /* Return current bitrate in Kbps */
- guint32 (*get_rate)(NMWifiUtils *data);
-
- gboolean (*get_bssid)(NMWifiUtils *data, guint8 *out_bssid);
-
- /* Return a signal strength percentage 0 - 100% for the current BSSID;
- * return -1 on errors or if not associated.
+ /*
+ * @out_bssid: must be NULL or an ETH_ALEN-byte buffer
+ * @out_quality: receives signal strength percentage 0 - 100% for the current BSSID, if not NULL
+ * @out_rate: receives current bitrate in Kbps if not NULL
+ *
+ * Returns %TRUE on succcess, %FALSE on errors or if not associated.
*/
- int (*get_qual)(NMWifiUtils *data);
+ gboolean (*get_station)(NMWifiUtils *data,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate);
/* OLPC Mesh-only functions */
diff --git a/src/platform/wifi/nm-wifi-utils-wext.c b/src/platform/wifi/nm-wifi-utils-wext.c
index 8299415d23..fde48cc652 100644
--- a/src/platform/wifi/nm-wifi-utils-wext.c
+++ b/src/platform/wifi/nm-wifi-utils-wext.c
@@ -266,7 +266,7 @@ wifi_wext_find_freq(NMWifiUtils *data, const guint32 *freqs)
}
static gboolean
-wifi_wext_get_bssid(NMWifiUtils *data, guint8 *out_bssid)
+wifi_wext_get_bssid(NMWifiUtils *data, NMEtherAddr *out_bssid)
{
NMWifiUtilsWext *wext = (NMWifiUtilsWext *) data;
struct iwreq wrq;
@@ -453,6 +453,38 @@ wifi_wext_get_qual(NMWifiUtils *data)
return wext_qual_to_percent(&stats.qual, &wext->max_qual);
}
+static gboolean
+wifi_wext_get_station(NMWifiUtils *data,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
+{
+ NMEtherAddr local_addr;
+
+ if (!out_bssid && !out_quality && !out_rate) {
+ /* hm, the caller requested no parameter at all?
+ * Don't simply return TRUE, but at least check that
+ * we can successfully fetch the bssid. */
+ out_bssid = &local_addr;
+ }
+
+ if (out_bssid) {
+ if (!wifi_wext_get_bssid(data, out_bssid))
+ return FALSE;
+ }
+ if (out_quality) {
+ *out_quality = wifi_wext_get_qual(data);
+ if (*out_quality < 0)
+ return FALSE;
+ }
+ if (out_rate) {
+ *out_rate = wifi_wext_get_rate(data);
+ if (*out_rate == 0)
+ return FALSE;
+ }
+ return TRUE;
+}
+
/*****************************************************************************/
/* OLPC Mesh-only functions */
@@ -677,9 +709,7 @@ nm_wifi_utils_wext_class_init(NMWifiUtilsWextClass *klass)
wifi_utils_class->set_powersave = wifi_wext_set_powersave;
wifi_utils_class->get_freq = wifi_wext_get_freq;
wifi_utils_class->find_freq = wifi_wext_find_freq;
- wifi_utils_class->get_bssid = wifi_wext_get_bssid;
- wifi_utils_class->get_rate = wifi_wext_get_rate;
- wifi_utils_class->get_qual = wifi_wext_get_qual;
+ wifi_utils_class->get_station = wifi_wext_get_station;
wifi_utils_class->get_mesh_channel = wifi_wext_get_mesh_channel;
wifi_utils_class->set_mesh_channel = wifi_wext_set_mesh_channel;
wifi_utils_class->set_mesh_ssid = wifi_wext_set_mesh_ssid;
diff --git a/src/platform/wifi/nm-wifi-utils.c b/src/platform/wifi/nm-wifi-utils.c
index 3f9d3a48f5..92fbc200d5 100644
--- a/src/platform/wifi/nm-wifi-utils.c
+++ b/src/platform/wifi/nm-wifi-utils.c
@@ -132,27 +132,14 @@ nm_wifi_utils_find_freq(NMWifiUtils *data, const guint32 *freqs)
}
gboolean
-nm_wifi_utils_get_bssid(NMWifiUtils *data, guint8 *out_bssid)
+nm_wifi_utils_get_station(NMWifiUtils *data,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate)
{
g_return_val_if_fail(data != NULL, FALSE);
- g_return_val_if_fail(out_bssid != NULL, FALSE);
- memset(out_bssid, 0, ETH_ALEN);
- return NM_WIFI_UTILS_GET_CLASS(data)->get_bssid(data, out_bssid);
-}
-
-guint32
-nm_wifi_utils_get_rate(NMWifiUtils *data)
-{
- g_return_val_if_fail(data != NULL, 0);
- return NM_WIFI_UTILS_GET_CLASS(data)->get_rate(data);
-}
-
-int
-nm_wifi_utils_get_qual(NMWifiUtils *data)
-{
- g_return_val_if_fail(data != NULL, 0);
- return NM_WIFI_UTILS_GET_CLASS(data)->get_qual(data);
+ return NM_WIFI_UTILS_GET_CLASS(data)->get_station(data, out_bssid, out_quality, out_rate);
}
gboolean
diff --git a/src/platform/wifi/nm-wifi-utils.h b/src/platform/wifi/nm-wifi-utils.h
index d1df2fb822..2febd52803 100644
--- a/src/platform/wifi/nm-wifi-utils.h
+++ b/src/platform/wifi/nm-wifi-utils.h
@@ -43,14 +43,17 @@ guint32 nm_wifi_utils_get_freq(NMWifiUtils *data);
* Frequencies are specified in MHz. */
guint32 nm_wifi_utils_find_freq(NMWifiUtils *data, const guint32 *freqs);
-/* out_bssid must be ETH_ALEN bytes */
-gboolean nm_wifi_utils_get_bssid(NMWifiUtils *data, guint8 *out_bssid);
-
-/* Returns current bitrate in Kbps */
-guint32 nm_wifi_utils_get_rate(NMWifiUtils *data);
-
-/* Returns quality 0 - 100% on success, or -1 on error */
-int nm_wifi_utils_get_qual(NMWifiUtils *data);
+/*
+ * @out_bssid: must be NULL or an ETH_ALEN-byte buffer
+ * @out_quality: receives signal quality in 0 - 100% range if not NULL
+ * @out_rate: receives current bitrate in Kbps if not NULL
+ *
+ * Returns %TRUE on succcess.
+ */
+gboolean nm_wifi_utils_get_station(NMWifiUtils *data,
+ NMEtherAddr *out_bssid,
+ int * out_quality,
+ guint32 * out_rate);
/* Tells the driver DHCP or SLAAC is running */
gboolean nm_wifi_utils_indicate_addressing_running(NMWifiUtils *data, gboolean running);
diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c
index a200334c81..a2ac2a23eb 100644
--- a/src/ppp/nm-ppp-manager.c
+++ b/src/ppp/nm-ppp-manager.c
@@ -1302,8 +1302,7 @@ _ppp_manager_new(const char *iface)
{
g_return_val_if_fail(iface != NULL, NULL);
- return (
- NMPPPManager *) g_object_new(NM_TYPE_PPP_MANAGER, NM_PPP_MANAGER_PARENT_IFACE, iface, NULL);
+ return g_object_new(NM_TYPE_PPP_MANAGER, NM_PPP_MANAGER_PARENT_IFACE, iface, NULL);
}
static void
diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c
index 743a3467ce..81a522436e 100644
--- a/src/settings/nm-secret-agent.c
+++ b/src/settings/nm-secret-agent.c
@@ -695,7 +695,7 @@ nm_secret_agent_new(GDBusMethodInvocation * context,
dbus_owner = nm_auth_subject_get_unix_process_dbus_sender(subject);
- self = (NMSecretAgent *) g_object_new(NM_TYPE_SECRET_AGENT, NULL);
+ self = g_object_new(NM_TYPE_SECRET_AGENT, NULL);
priv = NM_SECRET_AGENT_GET_PRIVATE(self);
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 6b9d50834c..8b0b2c0dd3 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -2521,17 +2521,9 @@ nm_settings_add_connection_dbus(NMSettings * self,
else
perm = NM_AUTH_PERMISSION_SETTINGS_MODIFY_SYSTEM;
- /* Validate the user request */
chain = nm_auth_chain_new_subject(subject, context, pk_add_cb, self);
- if (!chain) {
- error = g_error_new_literal(NM_SETTINGS_ERROR,
- NM_SETTINGS_ERROR_PERMISSION_DENIED,
- NM_UTILS_ERROR_MSG_REQ_AUTH_FAILED);
- goto done;
- }
c_list_link_tail(&priv->auth_lst_head, nm_auth_chain_parent_lst_list(chain));
-
nm_auth_chain_set_data(chain, "perm", (gpointer) perm, NULL);
nm_auth_chain_set_data(chain, "connection", g_object_ref(connection), g_object_unref);
nm_auth_chain_set_data(chain, "callback", callback, NULL);
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index 5a021a8c37..9b7873c01b 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -2547,6 +2547,42 @@ make_ip6_setting(shvarFile *ifcfg, shvarFile *network_ifcfg, gboolean routes_rea
}
static NMSetting *
+make_hostname_setting(shvarFile *ifcfg)
+{
+ NMSetting *setting;
+ NMTernary from_dhcp;
+ NMTernary from_dns_lookup;
+ NMTernary only_from_default;
+ int priority;
+
+ priority = svGetValueInt64(ifcfg, "HOSTNAME_PRIORITY", 10, G_MININT32, G_MAXINT32, 0);
+
+ from_dhcp = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DHCP");
+ from_dns_lookup = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DNS_LOOKUP");
+ only_from_default = svGetValueTernary(ifcfg, "HOSTNAME_ONLY_FROM_DEFAULT");
+
+ /* Create the setting when at least one key is not default*/
+ if (priority == 0 && from_dhcp == NM_TERNARY_DEFAULT && from_dns_lookup == NM_TERNARY_DEFAULT
+ && only_from_default == NM_TERNARY_DEFAULT)
+ return NULL;
+
+ setting = nm_setting_hostname_new();
+
+ g_object_set(setting,
+ NM_SETTING_HOSTNAME_PRIORITY,
+ priority,
+ NM_SETTING_HOSTNAME_FROM_DHCP,
+ from_dhcp,
+ NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
+ from_dns_lookup,
+ NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT,
+ only_from_default,
+ NULL);
+
+ return setting;
+}
+
+static NMSetting *
make_sriov_setting(shvarFile *ifcfg)
{
gs_unref_hashtable GHashTable *keys = NULL;
@@ -2951,7 +2987,8 @@ make_dcb_setting(shvarFile *ifcfg, NMSetting **out_setting, GError **error)
gboolean dcb_on;
NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
- g_return_val_if_fail(out_setting != NULL, FALSE);
+ g_return_val_if_fail(out_setting, FALSE);
+ *out_setting = NULL;
dcb_on = !!svGetValueBoolean(ifcfg, "DCB", FALSE);
if (!dcb_on)
@@ -5339,24 +5376,31 @@ infiniband_connection_from_ifcfg(const char *file, shvarFile *ifcfg, GError **er
static void
handle_bond_option(NMSettingBond *s_bond, const char *key, const char *value)
{
- char * sanitized = NULL, *j;
- const char *p = value;
+ gs_free char *sanitized = NULL;
+ const char * p = value;
/* Remove any quotes or +/- from arp_ip_target */
- if (!g_strcmp0(key, NM_SETTING_BOND_OPTION_ARP_IP_TARGET) && value && value[0]) {
+ if (nm_streq0(key, NM_SETTING_BOND_OPTION_ARP_IP_TARGET) && value && value[0]) {
+ char *j;
+
if (*p == '\'' || *p == '"')
p++;
- j = sanitized = g_malloc0(strlen(p) + 1);
+ j = sanitized = g_malloc(strlen(p) + 1);
while (*p) {
if (*p != '+' && *p != '-' && *p != '\'' && *p != '"')
*j++ = *p;
p++;
}
+ *j++ = '\0';
+ value = sanitized;
}
- if (!nm_setting_bond_add_option(s_bond, key, sanitized ?: value))
- PARSE_WARNING("invalid bonding option '%s' = %s", key, sanitized ?: value);
- g_free(sanitized);
+ if (!_nm_setting_bond_validate_option(key, value, NULL)) {
+ PARSE_WARNING("invalid bonding option '%s' = %s", key, value);
+ return;
+ }
+
+ nm_setting_bond_add_option(s_bond, key, value);
}
static NMSetting *
@@ -6236,8 +6280,9 @@ connection_from_file_full(const char *filename,
gs_unref_object NMConnection *connection = NULL;
gs_free char * type = NULL;
char * devtype, *bootproto;
- NMSetting * s_ip4, *s_ip6, *s_tc, *s_proxy, *s_port, *s_dcb = NULL, *s_user;
- NMSetting * s_sriov, *s_match;
+ NMSetting * setting;
+ NMSetting * s_ip4;
+ NMSetting * s_ip6;
const char * ifcfg_name = NULL;
gboolean has_ip4_defroute = FALSE;
gboolean has_complex_routes_v4;
@@ -6525,13 +6570,13 @@ connection_from_file_full(const char *filename,
NM_SETTING_IP_CONFIG(s_ip4),
NM_SETTING_IP_CONFIG(s_ip6));
- s_sriov = make_sriov_setting(main_ifcfg);
- if (s_sriov)
- nm_connection_add_setting(connection, s_sriov);
+ setting = make_sriov_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- s_tc = make_tc_setting(main_ifcfg);
- if (s_tc)
- nm_connection_add_setting(connection, s_tc);
+ setting = make_tc_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
/* For backwards compatibility, if IPv4 is disabled or the
* config fails for some reason, we read DOMAIN and put the
@@ -6539,30 +6584,34 @@ connection_from_file_full(const char *filename,
*/
check_dns_search_domains(main_ifcfg, s_ip4, s_ip6);
- s_proxy = make_proxy_setting(main_ifcfg);
- if (s_proxy)
- nm_connection_add_setting(connection, s_proxy);
+ setting = make_proxy_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
+
+ setting = make_hostname_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- s_user = make_user_setting(main_ifcfg);
- if (s_user)
- nm_connection_add_setting(connection, s_user);
+ setting = make_user_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- s_match = make_match_setting(main_ifcfg);
- if (s_match)
- nm_connection_add_setting(connection, s_match);
+ setting = make_match_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- s_port = make_bridge_port_setting(main_ifcfg);
- if (s_port)
- nm_connection_add_setting(connection, s_port);
+ setting = make_bridge_port_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- s_port = make_team_port_setting(main_ifcfg);
- if (s_port)
- nm_connection_add_setting(connection, s_port);
+ setting = make_team_port_setting(main_ifcfg);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
- if (!make_dcb_setting(main_ifcfg, &s_dcb, error))
+ if (!make_dcb_setting(main_ifcfg, &setting, error))
return NULL;
- if (s_dcb)
- nm_connection_add_setting(connection, s_dcb);
+ if (setting)
+ nm_connection_add_setting(connection, setting);
if (!nm_connection_normalize(connection, NULL, NULL, error))
return NULL;
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c
index 567dc8a847..0ebc085330 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.c
@@ -873,6 +873,10 @@ const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = {
_KEY_TYPE("GATEWAY_PING_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
_KEY_TYPE("GENERATE_MAC_ADDRESS_MASK", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
_KEY_TYPE("GVRP", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
+ _KEY_TYPE("HOSTNAME_FROM_DHCP", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
+ _KEY_TYPE("HOSTNAME_FROM_DNS_LOOKUP", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
+ _KEY_TYPE("HOSTNAME_ONLY_FROM_DEFAULT", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
+ _KEY_TYPE("HOSTNAME_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
_KEY_TYPE("HWADDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
_KEY_TYPE("HWADDR_BLACKLIST", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
_KEY_TYPE("IEEE_8021X_ALTSUBJECT_MATCHES", NMS_IFCFG_KEY_TYPE_IS_PLAIN),
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h
index 16ea7f0f88..97111e76ea 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-utils.h
@@ -33,7 +33,7 @@ typedef struct {
NMSIfcfgKeyTypeFlags key_flags;
} NMSIfcfgKeyTypeInfo;
-extern const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[243];
+extern const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[247];
const NMSIfcfgKeyTypeInfo *nms_ifcfg_well_known_key_find_info(const char *key, gssize *out_idx);
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index 648846727f..ee78780282 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -1051,6 +1051,28 @@ write_infiniband_setting(NMConnection *connection, shvarFile *ifcfg, GError **er
return TRUE;
}
+static void
+write_hostname_setting(NMConnection *connection, shvarFile *ifcfg)
+{
+ NMSettingHostname *s_hostname;
+ NMTernary t;
+
+ s_hostname = _nm_connection_get_setting(connection, NM_TYPE_SETTING_HOSTNAME);
+ if (!s_hostname)
+ return;
+
+ svSetValueInt64(ifcfg, "HOSTNAME_PRIORITY", nm_setting_hostname_get_priority(s_hostname));
+
+ t = nm_setting_hostname_get_from_dhcp(s_hostname);
+ svSetValueInt64_cond(ifcfg, "HOSTNAME_FROM_DHCP", t != NM_TERNARY_DEFAULT, t);
+
+ t = nm_setting_hostname_get_from_dns_lookup(s_hostname);
+ svSetValueInt64_cond(ifcfg, "HOSTNAME_FROM_DNS_LOOKUP", t != NM_TERNARY_DEFAULT, t);
+
+ t = nm_setting_hostname_get_only_from_default(s_hostname);
+ svSetValueInt64_cond(ifcfg, "HOSTNAME_ONLY_FROM_DEFAULT", t != NM_TERNARY_DEFAULT, t);
+}
+
static gboolean
write_wired_setting(NMConnection *connection, shvarFile *ifcfg, GError **error)
{
@@ -3347,7 +3369,7 @@ do_write_construct(NMConnection * connection,
return FALSE;
write_match_setting(connection, ifcfg);
-
+ write_hostname_setting(connection, ifcfg);
write_sriov_setting(connection, ifcfg);
if (!write_tc_setting(connection, ifcfg, error))
diff --git a/src/supplicant/nm-supplicant-interface.c b/src/supplicant/nm-supplicant-interface.c
index 77254c7ebc..d3558a3331 100644
--- a/src/supplicant/nm-supplicant-interface.c
+++ b/src/supplicant/nm-supplicant-interface.c
@@ -668,19 +668,17 @@ _bss_info_properties_changed(NMSupplicantInterface *self,
if (arr_len != 0) {
nm_assert(arr_len == sizeof(bss_info->bssid));
bss_info->bssid_valid = TRUE;
- memcpy(bss_info->bssid, arr_data, sizeof(bss_info->bssid));
+ memcpy(&bss_info->bssid, arr_data, sizeof(bss_info->bssid));
} else if (bss_info->bssid_valid) {
bss_info->bssid_valid = FALSE;
- memset(bss_info->bssid, 0, sizeof(bss_info->bssid));
+ memset(&bss_info->bssid, 0, sizeof(bss_info->bssid));
}
g_variant_unref(v_v);
} else {
nm_assert(!initial || !bss_info->bssid_valid);
}
- nm_assert(
- (bss_info->bssid_valid && !nm_utils_memeqzero(bss_info->bssid, sizeof(bss_info->bssid)))
- || (!bss_info->bssid_valid
- && nm_utils_memeqzero(bss_info->bssid, sizeof(bss_info->bssid))));
+ nm_assert((!!bss_info->bssid_valid)
+ == (!nm_utils_memeqzero(&bss_info->bssid, sizeof(bss_info->bssid))));
p_max_rate_has = FALSE;
p_max_rate = 0;
@@ -1322,6 +1320,54 @@ nm_supplicant_interface_get_capabilities(NMSupplicantInterface *self)
return caps;
}
+static void
+set_bridge_cb(GVariant *ret, GError *error, gpointer user_data)
+{
+ NMSupplicantInterface *self;
+ NMLogLevel level;
+ gs_free const char * bridge = NULL;
+
+ nm_utils_user_data_unpack(user_data, &self, &bridge);
+
+ if (nm_utils_error_is_cancelled(error))
+ return;
+
+ /* The supplicant supports writing the bridge property since
+ * version 2.10. Before that version, trying to set the property
+ * results in a InvalidArgs error. Don't log a warning unless we
+ * are trying to set a non-NULL bridge. */
+ if (!error)
+ level = LOGL_DEBUG;
+ else if (bridge == NULL && g_error_matches(error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS)) {
+ level = LOGL_DEBUG;
+ } else
+ level = LOGL_WARN;
+
+ _NMLOG(level,
+ "set bridge %s%s%s result: %s",
+ NM_PRINT_FMT_QUOTE_STRING(bridge),
+ error ? error->message : "success");
+}
+
+void
+nm_supplicant_interface_set_bridge(NMSupplicantInterface *self, const char *bridge)
+{
+ NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE(self);
+
+ _LOGT("set bridge %s%s%s", NM_PRINT_FMT_QUOTE_STRING(bridge));
+
+ nm_dbus_connection_call_set(priv->dbus_connection,
+ priv->name_owner->str,
+ priv->object_path->str,
+ NM_WPAS_DBUS_IFACE_INTERFACE,
+ "BridgeIfname",
+ g_variant_new_string(bridge ?: ""),
+ DBUS_TIMEOUT_MSEC,
+ priv->main_cancellable,
+ set_bridge_cb,
+ nm_utils_user_data_pack(self, g_strdup(bridge)));
+}
+
void
nm_supplicant_interface_set_global_capabilities(NMSupplicantInterface *self, NMSupplCapMask value)
{
diff --git a/src/supplicant/nm-supplicant-interface.h b/src/supplicant/nm-supplicant-interface.h
index 812ea193fb..97ff0a95b0 100644
--- a/src/supplicant/nm-supplicant-interface.h
+++ b/src/supplicant/nm-supplicant-interface.h
@@ -190,4 +190,6 @@ void nm_supplicant_interface_cancel_wps(NMSupplicantInterface *self);
NMSupplicantAuthState nm_supplicant_interface_get_auth_state(NMSupplicantInterface *self);
+void nm_supplicant_interface_set_bridge(NMSupplicantInterface *self, const char *bridge);
+
#endif /* __NM_SUPPLICANT_INTERFACE_H__ */
diff --git a/src/supplicant/nm-supplicant-types.h b/src/supplicant/nm-supplicant-types.h
index e35059af45..72936ddfc2 100644
--- a/src/supplicant/nm-supplicant-types.h
+++ b/src/supplicant/nm-supplicant-types.h
@@ -158,7 +158,7 @@ typedef struct _NMSupplicantBssInfo {
guint8 signal_percent;
- guint8 bssid[6 /* ETH_ALEN */];
+ NMEtherAddr bssid;
NM80211ApFlags ap_flags : 5;
diff --git a/src/systemd/src/libsystemd/sd-event/event-source.h b/src/systemd/src/libsystemd/sd-event/event-source.h
index 08eb9b6a61..a8a30d825e 100644
--- a/src/systemd/src/libsystemd/sd-event/event-source.h
+++ b/src/systemd/src/libsystemd/sd-event/event-source.h
@@ -60,6 +60,7 @@ struct sd_event_source {
bool pending:1;
bool dispatching:1;
bool floating:1;
+ bool exit_on_failure:1;
int64_t priority;
unsigned pending_index;
diff --git a/src/systemd/src/libsystemd/sd-event/sd-event.c b/src/systemd/src/libsystemd/sd-event/sd-event.c
index d5993a22b6..60df499b01 100644
--- a/src/systemd/src/libsystemd/sd-event/sd-event.c
+++ b/src/systemd/src/libsystemd/sd-event/sd-event.c
@@ -974,6 +974,12 @@ static sd_event_source *source_new(sd_event *e, bool floating, EventSourceType t
return s;
}
+static int io_exit_callback(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
+ assert(s);
+
+ return sd_event_exit(sd_event_source_get_event(s), PTR_TO_INT(userdata));
+}
+
_public_ int sd_event_add_io(
sd_event *e,
sd_event_source **ret,
@@ -989,10 +995,12 @@ _public_ int sd_event_add_io(
assert_return(e = event_resolve(e), -ENOPKG);
assert_return(fd >= 0, -EBADF);
assert_return(!(events & ~(EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLPRI|EPOLLERR|EPOLLHUP|EPOLLET)), -EINVAL);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = io_exit_callback;
+
s = source_new(e, !ret, SOURCE_IO);
if (!s)
return -ENOMEM;
@@ -1238,6 +1246,12 @@ _public_ int sd_event_add_signal(
return 0;
}
+static int child_exit_callback(sd_event_source *s, const siginfo_t *si, void *userdata) {
+ assert(s);
+
+ return sd_event_exit(sd_event_source_get_event(s), PTR_TO_INT(userdata));
+}
+
static bool shall_use_pidfd(void) {
/* Mostly relevant for debugging, i.e. this is used in test-event.c to test the event loop once with and once without pidfd */
return getenv_bool_secure("SYSTEMD_PIDFD") != 0;
@@ -1259,10 +1273,12 @@ _public_ int sd_event_add_child(
assert_return(pid > 1, -EINVAL);
assert_return(!(options & ~(WEXITED|WSTOPPED|WCONTINUED)), -EINVAL);
assert_return(options != 0, -EINVAL);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = child_exit_callback;
+
if (e->n_enabled_child_sources == 0) {
/* Caller must block SIGCHLD before using us to watch children, even if pidfd is available,
* for compatibility with pre-pidfd and because we don't want the reap the child processes
@@ -1360,10 +1376,12 @@ _public_ int sd_event_add_child_pidfd(
assert_return(pidfd >= 0, -EBADF);
assert_return(!(options & ~(WEXITED|WSTOPPED|WCONTINUED)), -EINVAL);
assert_return(options != 0, -EINVAL);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = child_exit_callback;
+
if (e->n_enabled_child_sources == 0) {
r = signal_is_blocked(SIGCHLD);
if (r < 0)
@@ -1430,6 +1448,12 @@ _public_ int sd_event_add_child_pidfd(
}
#endif /* NM_IGNORED */
+static int generic_exit_callback(sd_event_source *s, void *userdata) {
+ assert(s);
+
+ return sd_event_exit(sd_event_source_get_event(s), PTR_TO_INT(userdata));
+}
+
_public_ int sd_event_add_defer(
sd_event *e,
sd_event_source **ret,
@@ -1441,10 +1465,12 @@ _public_ int sd_event_add_defer(
assert_return(e, -EINVAL);
assert_return(e = event_resolve(e), -ENOPKG);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = generic_exit_callback;
+
s = source_new(e, !ret, SOURCE_DEFER);
if (!s)
return -ENOMEM;
@@ -1475,10 +1501,12 @@ _public_ int sd_event_add_post(
assert_return(e, -EINVAL);
assert_return(e = event_resolve(e), -ENOPKG);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = generic_exit_callback;
+
s = source_new(e, !ret, SOURCE_POST);
if (!s)
return -ENOMEM;
@@ -1830,6 +1858,12 @@ static int inode_data_realize_watch(sd_event *e, struct inode_data *d) {
return 1;
}
+static int inotify_exit_callback(sd_event_source *s, const struct inotify_event *event, void *userdata) {
+ assert(s);
+
+ return sd_event_exit(sd_event_source_get_event(s), PTR_TO_INT(userdata));
+}
+
_public_ int sd_event_add_inotify(
sd_event *e,
sd_event_source **ret,
@@ -1848,10 +1882,12 @@ _public_ int sd_event_add_inotify(
assert_return(e, -EINVAL);
assert_return(e = event_resolve(e), -ENOPKG);
assert_return(path, -EINVAL);
- assert_return(callback, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
+ if (!callback)
+ callback = inotify_exit_callback;
+
/* Refuse IN_MASK_ADD since we coalesce watches on the same inode, and hence really don't want to merge
* masks. Or in other words, this whole code exists only to manage IN_MASK_ADD type operations for you, hence
* the user can't use them for us. */
@@ -3187,16 +3223,21 @@ static int process_inotify(sd_event *e) {
}
static int source_dispatch(sd_event_source *s) {
+ _cleanup_(sd_event_unrefp) sd_event *saved_event = NULL;
EventSourceType saved_type;
int r = 0;
assert(s);
assert(s->pending || s->type == SOURCE_EXIT);
- /* Save the event source type, here, so that we still know it after the event callback which might invalidate
- * the event. */
+ /* Save the event source type, here, so that we still know it after the event callback which might
+ * invalidate the event. */
saved_type = s->type;
+ /* Similar, store a reference to the event loop object, so that we can still access it after the
+ * callback might have invalidated/disconnected the event source. */
+ saved_event = sd_event_ref(s->event);
+
if (!IN_SET(s->type, SOURCE_DEFER, SOURCE_EXIT)) {
r = source_set_pending(s, false);
if (r < 0)
@@ -3303,9 +3344,15 @@ static int source_dispatch(sd_event_source *s) {
s->dispatching = false;
- if (r < 0)
- log_debug_errno(r, "Event source %s (type %s) returned error, disabling: %m",
- strna(s->description), event_source_type_to_string(saved_type));
+ if (r < 0) {
+ log_debug_errno(r, "Event source %s (type %s) returned error, %s: %m",
+ strna(s->description),
+ event_source_type_to_string(saved_type),
+ s->exit_on_failure ? "exiting" : "disabling");
+
+ if (s->exit_on_failure)
+ (void) sd_event_exit(saved_event, r);
+ }
if (s->n_ref == 0)
source_free(s);
@@ -3338,9 +3385,15 @@ static int event_prepare(sd_event *e) {
r = s->prepare(s, s->userdata);
s->dispatching = false;
- if (r < 0)
- log_debug_errno(r, "Prepare callback of event source %s (type %s) returned error, disabling: %m",
- strna(s->description), event_source_type_to_string(s->type));
+ if (r < 0) {
+ log_debug_errno(r, "Prepare callback of event source %s (type %s) returned error, %s: %m",
+ strna(s->description),
+ event_source_type_to_string(s->type),
+ s->exit_on_failure ? "exiting" : "disabling");
+
+ if (s->exit_on_failure)
+ (void) sd_event_exit(e, r);
+ }
if (s->n_ref == 0)
source_free(s);
@@ -3979,4 +4032,22 @@ _public_ int sd_event_source_set_floating(sd_event_source *s, int b) {
return 1;
}
+
+_public_ int sd_event_source_get_exit_on_failure(sd_event_source *s) {
+ assert_return(s, -EINVAL);
+ assert_return(s->type != SOURCE_EXIT, -EDOM);
+
+ return s->exit_on_failure;
+}
+
+_public_ int sd_event_source_set_exit_on_failure(sd_event_source *s, int b) {
+ assert_return(s, -EINVAL);
+ assert_return(s->type != SOURCE_EXIT, -EDOM);
+
+ if (s->exit_on_failure == !!b)
+ return 0;
+
+ s->exit_on_failure = b;
+ return 1;
+}
#endif /* NM_IGNORED */
diff --git a/src/systemd/src/systemd/sd-event.h b/src/systemd/src/systemd/sd-event.h
index dc96bfa681..3a53c3d27d 100644
--- a/src/systemd/src/systemd/sd-event.h
+++ b/src/systemd/src/systemd/sd-event.h
@@ -160,6 +160,8 @@ int sd_event_source_set_destroy_callback(sd_event_source *s, sd_event_destroy_t
int sd_event_source_get_destroy_callback(sd_event_source *s, sd_event_destroy_t *ret);
int sd_event_source_get_floating(sd_event_source *s);
int sd_event_source_set_floating(sd_event_source *s, int b);
+int sd_event_source_get_exit_on_failure(sd_event_source *s);
+int sd_event_source_set_exit_on_failure(sd_event_source *s, int b);
/* Define helpers so that __attribute__((cleanup(sd_event_unrefp))) and similar may be used. */
_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_event, sd_event_unref);
diff --git a/src/tests/test-core-with-expect.c b/src/tests/test-core-with-expect.c
index 62b93a047b..9c77a85d47 100644
--- a/src/tests/test-core-with-expect.c
+++ b/src/tests/test-core-with-expect.c
@@ -236,7 +236,7 @@ do_test_nm_utils_kill_child(void)
char *argv1[] = {
"bash",
"-c",
- "trap \"sleep 0.3; exit 10\" EXIT; "
+ "trap \"sleep 0.5; exit 10\" EXIT; "
"sleep 100000; exit $? #" TEST_TOKEN,
NULL,
};
@@ -562,30 +562,26 @@ test_nm_utils_array_remove_at_indexes(void)
static void
test_nm_ethernet_address_is_valid(void)
{
- g_assert(!nm_ethernet_address_is_valid(NULL, -1));
- g_assert(!nm_ethernet_address_is_valid(NULL, ETH_ALEN));
+ g_assert(!nm_ether_addr_is_valid_str(NULL));
+ g_assert(!nm_ether_addr_is_valid(NULL));
- g_assert(!nm_ethernet_address_is_valid("FF:FF:FF:FF:FF:FF", -1));
- g_assert(!nm_ethernet_address_is_valid("00:00:00:00:00:00", -1));
- g_assert(!nm_ethernet_address_is_valid("44:44:44:44:44:44", -1));
- g_assert(!nm_ethernet_address_is_valid("00:30:b4:00:00:00", -1));
+ g_assert(!nm_ether_addr_is_valid_str("FF:FF:FF:FF:FF:FF"));
+ g_assert(!nm_ether_addr_is_valid_str("00:00:00:00:00:00"));
+ g_assert(!nm_ether_addr_is_valid_str("44:44:44:44:44:44"));
+ g_assert(!nm_ether_addr_is_valid_str("00:30:b4:00:00:00"));
- g_assert(!nm_ethernet_address_is_valid("", -1));
- g_assert(!nm_ethernet_address_is_valid("1", -1));
- g_assert(!nm_ethernet_address_is_valid("2", -1));
+ g_assert(!nm_ether_addr_is_valid_str(""));
+ g_assert(!nm_ether_addr_is_valid_str("1"));
+ g_assert(!nm_ether_addr_is_valid_str("2"));
- g_assert(
- !nm_ethernet_address_is_valid(((guint8[8]){0x00, 0x30, 0xb4, 0x00, 0x00, 0x00}), ETH_ALEN));
- g_assert(
- nm_ethernet_address_is_valid(((guint8[8]){0x00, 0x30, 0xb4, 0x00, 0x00, 0x01}), ETH_ALEN));
+ g_assert(!nm_ether_addr_is_valid(&NM_ETHER_ADDR_INIT(0x00, 0x30, 0xb4, 0x00, 0x00, 0x00)));
+ g_assert(nm_ether_addr_is_valid(&NM_ETHER_ADDR_INIT(0x00, 0x30, 0xb4, 0x00, 0x00, 0x01)));
/* some Broad cast addresses (with MSB of first octet set). */
- g_assert(!nm_ethernet_address_is_valid("57:44:44:44:44:44", -1));
- g_assert(nm_ethernet_address_is_valid("56:44:44:44:44:44", -1));
- g_assert(
- !nm_ethernet_address_is_valid(((guint8[8]){0x03, 0x30, 0xb4, 0x00, 0x00, 0x00}), ETH_ALEN));
- g_assert(
- nm_ethernet_address_is_valid(((guint8[8]){0x02, 0x30, 0xb4, 0x00, 0x00, 0x01}), ETH_ALEN));
+ g_assert(!nm_ether_addr_is_valid_str("57:44:44:44:44:44"));
+ g_assert(nm_ether_addr_is_valid_str("56:44:44:44:44:44"));
+ g_assert(!nm_ether_addr_is_valid(&NM_ETHER_ADDR_INIT(0x03, 0x30, 0xb4, 0x00, 0x00, 0x00)));
+ g_assert(nm_ether_addr_is_valid(&NM_ETHER_ADDR_INIT(0x02, 0x30, 0xb4, 0x00, 0x00, 0x01)));
}
/*****************************************************************************/
diff --git a/src/tests/test-core.c b/src/tests/test-core.c
index 37b4a6252c..39c5ad46d2 100644
--- a/src/tests/test-core.c
+++ b/src/tests/test-core.c
@@ -1929,7 +1929,7 @@ test_reverse_dns_ip4(void)
GPtrArray *domains = g_ptr_array_new_full(8, g_free);
inet_pton(AF_INET, "7.2.3.0", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 27, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 27, domains);
g_assert_cmpuint(domains->len, ==, 32);
g_assert_cmpstr(domains->pdata[0], ==, "0.3.2.7.in-addr.arpa");
g_assert_cmpstr(domains->pdata[31], ==, "31.3.2.7.in-addr.arpa");
@@ -1937,7 +1937,7 @@ test_reverse_dns_ip4(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "10.155.16.0", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 22, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 22, domains);
g_assert_cmpuint(domains->len, ==, 4);
g_assert_cmpstr(domains->pdata[0], ==, "16.155.10.in-addr.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "17.155.10.in-addr.arpa");
@@ -1947,21 +1947,21 @@ test_reverse_dns_ip4(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "4.5.6.7", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 32, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 32, domains);
g_assert_cmpuint(domains->len, ==, 1);
g_assert_cmpstr(domains->pdata[0], ==, "7.6.5.4.in-addr.arpa");
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "4.5.6.7", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 8, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 8, domains);
g_assert_cmpuint(domains->len, ==, 1);
g_assert_cmpstr(domains->pdata[0], ==, "4.in-addr.arpa");
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "4.180.6.7", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 9, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 9, domains);
g_assert_cmpuint(domains->len, ==, 128);
g_assert_cmpstr(domains->pdata[0], ==, "128.4.in-addr.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "129.4.in-addr.arpa");
@@ -1970,7 +1970,7 @@ test_reverse_dns_ip4(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "172.16.0.0", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 12, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 12, domains);
g_assert_cmpuint(domains->len, ==, 16);
g_assert_cmpstr(domains->pdata[0], ==, "16.172.in-addr.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "17.172.in-addr.arpa");
@@ -1980,7 +1980,7 @@ test_reverse_dns_ip4(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET, "1.2.3.4", &addr);
- nm_utils_get_reverse_dns_domains_ip4(addr, 0, domains);
+ nm_utils_get_reverse_dns_domains_ip_4(addr, 0, domains);
g_assert_cmpuint(domains->len, ==, 0);
g_ptr_array_unref(domains);
@@ -1993,14 +1993,14 @@ test_reverse_dns_ip6(void)
GPtrArray * domains = g_ptr_array_new_full(8, g_free);
inet_pton(AF_INET6, "1234::56", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 16, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 16, domains);
g_assert_cmpuint(domains->len, ==, 1);
g_assert_cmpstr(domains->pdata[0], ==, "4.3.2.1.ip6.arpa");
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET6, "1234::56", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 17, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 17, domains);
g_assert_cmpuint(domains->len, ==, 8);
g_assert_cmpstr(domains->pdata[0], ==, "0.4.3.2.1.ip6.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "1.4.3.2.1.ip6.arpa");
@@ -2009,7 +2009,7 @@ test_reverse_dns_ip6(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET6, "2001:db8::", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 29, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 29, domains);
g_assert_cmpuint(domains->len, ==, 8);
g_assert_cmpstr(domains->pdata[0], ==, "8.b.d.0.1.0.0.2.ip6.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "9.b.d.0.1.0.0.2.ip6.arpa");
@@ -2018,7 +2018,7 @@ test_reverse_dns_ip6(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET6, "0123:4567:89ab:cdef::", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 63, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 63, domains);
g_assert_cmpuint(domains->len, ==, 2);
g_assert_cmpstr(domains->pdata[0], ==, "e.e.d.c.b.a.9.8.7.6.5.4.3.2.1.0.ip6.arpa");
g_assert_cmpstr(domains->pdata[1], ==, "f.e.d.c.b.a.9.8.7.6.5.4.3.2.1.0.ip6.arpa");
@@ -2026,7 +2026,7 @@ test_reverse_dns_ip6(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET6, "fec0:1234:5678:9ab0::", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 61, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 61, domains);
g_assert_cmpuint(domains->len, ==, 8);
g_assert_cmpstr(domains->pdata[0], ==, "0.b.a.9.8.7.6.5.4.3.2.1.0.c.e.f.ip6.arpa");
g_assert_cmpstr(domains->pdata[7], ==, "7.b.a.9.8.7.6.5.4.3.2.1.0.c.e.f.ip6.arpa");
@@ -2034,7 +2034,7 @@ test_reverse_dns_ip6(void)
g_ptr_array_set_size(domains, 0);
inet_pton(AF_INET6, "0123:4567:89ab:cdee::", &addr);
- nm_utils_get_reverse_dns_domains_ip6(&addr, 0, domains);
+ nm_utils_get_reverse_dns_domains_ip_6(&addr, 0, domains);
g_assert_cmpuint(domains->len, ==, 0);
g_ptr_array_unref(domains);
diff --git a/src/tests/test-l3cfg.c b/src/tests/test-l3cfg.c
index d55dcfbcaa..9156328b22 100644
--- a/src/tests/test-l3cfg.c
+++ b/src/tests/test-l3cfg.c
@@ -3,6 +3,7 @@
#include "nm-default.h"
#include "nm-l3cfg.h"
+#include "nm-l3-ipv4ll.h"
#include "nm-netns.h"
#include "platform/nm-platform.h"
@@ -10,6 +11,23 @@
/*****************************************************************************/
+static NML3Cfg *
+_netns_access_l3cfg(NMNetns *netns, int ifindex)
+{
+ NML3Cfg *l3cfg;
+
+ g_assert(NM_IS_NETNS(netns));
+ g_assert(ifindex > 0);
+
+ g_assert(!nm_netns_get_l3cfg(netns, ifindex));
+
+ l3cfg = nm_netns_access_l3cfg(netns, ifindex);
+ g_assert(NM_IS_L3CFG(l3cfg));
+ return l3cfg;
+}
+
+/*****************************************************************************/
+
typedef struct {
int test_idx;
NMPlatform * platform;
@@ -28,6 +46,8 @@ _test_fixture_1_setup(TestFixture1 *f, int test_idx)
{
const NMPlatformLink *l0;
const NMPlatformLink *l1;
+ const NMEtherAddr addr0 = NM_ETHER_ADDR_INIT(0xAA, 0xAA, test_idx, 0x00, 0x00, 0x00);
+ const NMEtherAddr addr1 = NM_ETHER_ADDR_INIT(0xAA, 0xAA, test_idx, 0x00, 0x00, 0x11);
g_assert_cmpint(test_idx, >, 0);
g_assert_cmpint(f->test_idx, ==, 0);
@@ -41,14 +61,26 @@ _test_fixture_1_setup(TestFixture1 *f, int test_idx)
f->multiidx = nm_dedup_multi_index_ref(nm_platform_get_multi_idx(f->platform));
f->netns = nm_netns_new(f->platform);
- l0 = nmtstp_link_veth_add(f->platform, -1, f->ifname0, f->ifname1);
+ nmtstp_link_veth_add(f->platform, -1, f->ifname0, f->ifname1);
+
+ l0 = nmtstp_link_get_typed(f->platform, -1, f->ifname0, NM_LINK_TYPE_VETH);
l1 = nmtstp_link_get_typed(f->platform, -1, f->ifname1, NM_LINK_TYPE_VETH);
f->ifindex0 = l0->ifindex;
- f->hwaddr0 = l0->l_address;
-
f->ifindex1 = l1->ifindex;
- f->hwaddr1 = l1->l_address;
+
+ g_assert_cmpint(nm_platform_link_set_address(f->platform, f->ifindex0, &addr0, sizeof(addr0)),
+ ==,
+ 0);
+ g_assert_cmpint(nm_platform_link_set_address(f->platform, f->ifindex1, &addr1, sizeof(addr1)),
+ ==,
+ 0);
+
+ l0 = nmtstp_link_get_typed(f->platform, f->ifindex0, f->ifname0, NM_LINK_TYPE_VETH);
+ l1 = nmtstp_link_get_typed(f->platform, f->ifindex1, f->ifname1, NM_LINK_TYPE_VETH);
+
+ f->hwaddr0 = l0->l_address;
+ f->hwaddr1 = l1->l_address;
g_assert(nm_platform_link_set_up(f->platform, f->ifindex0, NULL));
g_assert(nm_platform_link_set_up(f->platform, f->ifindex1, NULL));
@@ -93,15 +125,24 @@ typedef enum {
typedef struct {
const TestFixture1 *f;
+ bool has_addr4_101 : 1;
+ bool add_addr4_101 : 1;
+
+ guint32 acd_timeout_msec_a;
+ NML3AcdDefendType acd_defend_type_a;
+
TestL3cfgNotifyType notify_type;
guint post_commit_event_count;
guint general_event_count;
+ guint general_event_flags;
union {
struct {
int cb_count;
bool expected_probe_result : 1;
+ bool acd_event_ready_45 : 1;
+ bool acd_event_ready_101 : 1;
} wait_for_acd_ready_1;
- } notify_data;
+ } notify_result;
} TestL3cfgData;
static void
@@ -112,7 +153,8 @@ _test_l3cfg_data_set_notify_type(TestL3cfgData *tdata, TestL3cfgNotifyType notif
tdata->notify_type = notify_type;
tdata->post_commit_event_count = 0;
tdata->general_event_count = 0;
- memset(&tdata->notify_data, 0, sizeof(tdata->notify_data));
+ tdata->general_event_flags = 0;
+ memset(&tdata->notify_result, 0, sizeof(tdata->notify_result));
}
static void
@@ -120,6 +162,8 @@ _test_l3cfg_signal_notify(NML3Cfg * l3cfg,
const NML3ConfigNotifyData *notify_data,
TestL3cfgData * tdata)
{
+ guint i;
+
g_assert(NM_IS_L3CFG(l3cfg));
g_assert(tdata);
g_assert(notify_data);
@@ -131,6 +175,18 @@ _test_l3cfg_signal_notify(NML3Cfg * l3cfg,
else if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE) {
g_assert(NMP_OBJECT_IS_VALID(notify_data->platform_change.obj));
g_assert(notify_data->platform_change.change_type != 0);
+ } else if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT) {
+ g_assert_cmpint(notify_data->acd_event.info.n_track_infos, >=, 1);
+ g_assert(notify_data->acd_event.info.track_infos);
+ for (i = 0; i < notify_data->acd_event.info.n_track_infos; i++) {
+ const NML3AcdAddrTrackInfo *ti = &notify_data->acd_event.info.track_infos[i];
+
+ nm_assert(NMP_OBJECT_GET_TYPE(ti->obj) == NMP_OBJECT_TYPE_IP4_ADDRESS);
+ nm_assert(NMP_OBJECT_CAST_IP4_ADDRESS(ti->obj)->address
+ == notify_data->acd_event.info.addr);
+ nm_assert(NM_IS_L3_CONFIG_DATA(ti->l3cd));
+ nm_assert(ti->tag);
+ }
}
switch (tdata->notify_type) {
@@ -150,14 +206,33 @@ _test_l3cfg_signal_notify(NML3Cfg * l3cfg,
case NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT:
tdata->post_commit_event_count++;
return;
- case NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED:
+ case NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT:
switch (tdata->f->test_idx) {
case 2:
- nmtst_assert_ip4_address(notify_data->acd_completed.addr, "192.167.133.45");
- g_assert(notify_data->acd_completed.probe_result);
+ case 3:
+ nmtst_assert_ip4_address(notify_data->acd_event.info.addr, "192.168.133.45");
+ if (tdata->f->test_idx == 2)
+ g_assert(notify_data->acd_event.info.state == NM_L3_ACD_ADDR_STATE_DEFENDING);
+ else
+ g_assert(notify_data->acd_event.info.state == NM_L3_ACD_ADDR_STATE_PROBING);
g_assert(tdata->general_event_count == 0);
tdata->general_event_count++;
return;
+ case 4:
+ if (notify_data->acd_event.info.addr == nmtst_inet4_from_string("192.168.133.45")) {
+ g_assert(!NM_FLAGS_HAS(tdata->general_event_flags, 0x1u));
+ tdata->general_event_flags |= 0x1u;
+ g_assert(notify_data->acd_event.info.state == NM_L3_ACD_ADDR_STATE_PROBING);
+ tdata->general_event_count++;
+ } else if (notify_data->acd_event.info.addr
+ == nmtst_inet4_from_string("192.168.133.101")) {
+ g_assert(!NM_FLAGS_HAS(tdata->general_event_flags, 0x4u));
+ tdata->general_event_flags |= 0x4u;
+ g_assert(notify_data->acd_event.info.state == NM_L3_ACD_ADDR_STATE_PROBING);
+ tdata->general_event_count++;
+ } else
+ g_assert_not_reached();
+ return;
default:
g_assert_not_reached();
return;
@@ -169,30 +244,63 @@ _test_l3cfg_signal_notify(NML3Cfg * l3cfg,
return;
}
case TEST_L3CFG_NOTIFY_TYPE_WAIT_FOR_ACD_READY_1:
+ {
+ int num_acd_completed_events =
+ 1 + 2 + (tdata->add_addr4_101 ? (tdata->has_addr4_101 ? 1 : 3) : 0);
+
if (NM_IN_SET(notify_data->notify_type,
NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE,
NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE))
return;
- if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_ACD_COMPLETED) {
- g_assert(tdata->notify_data.wait_for_acd_ready_1.cb_count == 0);
- tdata->notify_data.wait_for_acd_ready_1.cb_count++;
+ if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_ACD_EVENT) {
+ if (notify_data->acd_event.info.addr == nmtst_inet4_from_string("192.168.133.45")) {
+ g_assert(NM_IN_SET(notify_data->acd_event.info.state,
+ NM_L3_ACD_ADDR_STATE_READY,
+ NM_L3_ACD_ADDR_STATE_DEFENDING));
+ tdata->notify_result.wait_for_acd_ready_1.acd_event_ready_45 = TRUE;
+ } else if (notify_data->acd_event.info.addr
+ == nmtst_inet4_from_string("192.168.133.101")) {
+ if (tdata->has_addr4_101) {
+ g_assert(
+ NM_IN_SET(notify_data->acd_event.info.state, NM_L3_ACD_ADDR_STATE_USED));
+ } else {
+ g_assert(NM_IN_SET(notify_data->acd_event.info.state,
+ NM_L3_ACD_ADDR_STATE_READY,
+ NM_L3_ACD_ADDR_STATE_DEFENDING));
+ tdata->notify_result.wait_for_acd_ready_1.acd_event_ready_101 = TRUE;
+ }
+ } else
+ g_assert_not_reached();
+
+ g_assert_cmpint(tdata->notify_result.wait_for_acd_ready_1.cb_count,
+ <,
+ num_acd_completed_events);
+ tdata->notify_result.wait_for_acd_ready_1.cb_count++;
return;
}
if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT) {
- g_assert(tdata->notify_data.wait_for_acd_ready_1.cb_count == 1);
- tdata->notify_data.wait_for_acd_ready_1.cb_count++;
- nmtstp_platform_ip_addresses_assert(tdata->f->platform,
- tdata->f->ifindex0,
- TRUE,
- TRUE,
- TRUE,
- "192.167.133.45",
- "1:2:3:4::45");
+ g_assert_cmpint(tdata->notify_result.wait_for_acd_ready_1.cb_count, >, 0);
+ g_assert_cmpint(tdata->notify_result.wait_for_acd_ready_1.cb_count,
+ <,
+ num_acd_completed_events);
+ tdata->notify_result.wait_for_acd_ready_1.cb_count++;
+ nmtstp_platform_ip_addresses_assert(
+ tdata->f->platform,
+ tdata->f->ifindex0,
+ TRUE,
+ TRUE,
+ TRUE,
+ tdata->notify_result.wait_for_acd_ready_1.acd_event_ready_45 ? "192.168.133.45"
+ : NULL,
+ tdata->notify_result.wait_for_acd_ready_1.acd_event_ready_101 ? "192.168.133.101"
+ : NULL,
+ "1:2:3:4::45");
return;
}
g_assert_not_reached();
return;
}
+ }
g_assert_not_reached();
}
@@ -200,19 +308,20 @@ _test_l3cfg_signal_notify(NML3Cfg * l3cfg,
static void
test_l3cfg(gconstpointer test_data)
{
- nm_auto(_test_fixture_1_teardown) TestFixture1 test_fixture = {};
+ const int TEST_IDX = GPOINTER_TO_INT(test_data);
+ const guint32 ACD_TIMEOUT_BASE_MSEC = 1000;
+ nm_auto(_test_fixture_1_teardown) TestFixture1 test_fixture = {};
const TestFixture1 * f;
NML3CfgCommitTypeHandle * commit_type_1;
NML3CfgCommitTypeHandle * commit_type_2;
- gs_unref_object NML3Cfg *l3cfg0 = NULL;
- nm_auto_unref_l3cd const NML3ConfigData *l3cd_a = NULL;
- guint32 acd_timeout_msec = 0;
- TestL3cfgData tdata_stack = {
+ gs_unref_object NML3Cfg *l3cfg0 = NULL;
+ nm_auto_unref_l3cd const NML3ConfigData *l3cd_a = NULL;
+ TestL3cfgData tdata_stack = {
.f = NULL,
};
TestL3cfgData *const tdata = &tdata_stack;
- _LOGD("test start (/l3cfg/%d)", GPOINTER_TO_INT(test_data));
+ _LOGD("test start (/l3cfg/%d)", TEST_IDX);
if (nmtst_test_quick()) {
gs_free char *msg =
@@ -223,18 +332,39 @@ test_l3cfg(gconstpointer test_data)
return;
}
- f = _test_fixture_1_setup(&test_fixture, GPOINTER_TO_INT(test_data));
-
- tdata->f = f;
+ f = _test_fixture_1_setup(&test_fixture, TEST_IDX);
+
+ tdata->f = f;
+ tdata->has_addr4_101 = (f->test_idx == 4 && nmtst_get_rand_bool());
+ tdata->add_addr4_101 = (f->test_idx == 4 && nmtst_get_rand_bool());
+
+ tdata->acd_timeout_msec_a = NM_IN_SET(f->test_idx, 3, 4) ? ACD_TIMEOUT_BASE_MSEC : 0u;
+ tdata->acd_defend_type_a = NM_IN_SET(f->test_idx, 4)
+ ? nmtst_rand_select(NM_L3_ACD_DEFEND_TYPE_NEVER,
+ NM_L3_ACD_DEFEND_TYPE_ONCE,
+ NM_L3_ACD_DEFEND_TYPE_ALWAYS)
+ : NM_L3_ACD_DEFEND_TYPE_NEVER;
+
+ if (tdata->has_addr4_101) {
+ nmtstp_ip4_address_add(f->platform,
+ -1,
+ f->ifindex1,
+ nmtst_inet4_from_string("192.168.133.101"),
+ 24,
+ nmtst_inet4_from_string("192.168.133.101"),
+ 100000,
+ 0,
+ 0,
+ NULL);
+ }
- l3cfg0 = nm_netns_access_l3cfg(f->netns, f->ifindex0);
- g_assert(NM_IS_L3CFG(l3cfg0));
+ l3cfg0 = _netns_access_l3cfg(f->netns, f->ifindex0);
g_signal_connect(l3cfg0, NM_L3CFG_SIGNAL_NOTIFY, G_CALLBACK(_test_l3cfg_signal_notify), tdata);
commit_type_1 = nm_l3cfg_commit_type_register(l3cfg0, NM_L3_CFG_COMMIT_TYPE_UPDATE, NULL);
- if ((nmtst_get_rand_uint32() % 4u) != 0) {
+ if (!nmtst_get_rand_one_case_in(4)) {
commit_type_2 =
nm_l3cfg_commit_type_register(l3cfg0,
nmtst_rand_select(NM_L3_CFG_COMMIT_TYPE_NONE,
@@ -249,6 +379,7 @@ test_l3cfg(gconstpointer test_data)
break;
case 2:
case 3:
+ case 4:
{
nm_auto_unref_l3cd_init NML3ConfigData *l3cd = NULL;
@@ -256,23 +387,32 @@ test_l3cfg(gconstpointer test_data)
nm_l3_config_data_add_address_4(
l3cd,
- NM_PLATFORM_IP4_ADDRESS_INIT(.address = nmtst_inet4_from_string("192.167.133.45"),
- .peer_address = nmtst_inet4_from_string("192.167.133.45"),
+ NM_PLATFORM_IP4_ADDRESS_INIT(.address = nmtst_inet4_from_string("192.168.133.45"),
+ .peer_address = nmtst_inet4_from_string("192.168.133.45"),
.plen = 24, ));
+ if (tdata->add_addr4_101) {
+ nm_l3_config_data_add_address_4(
+ l3cd,
+ NM_PLATFORM_IP4_ADDRESS_INIT(.address = nmtst_inet4_from_string("192.168.133.101"),
+ .peer_address =
+ nmtst_inet4_from_string("192.168.133.101"),
+ .plen = 24, ));
+ }
+
nm_l3_config_data_add_address_6(
l3cd,
NM_PLATFORM_IP6_ADDRESS_INIT(.address = *nmtst_inet6_from_string("1:2:3:4::45"),
.plen = 64, ));
- if (nmtst_get_rand_bool())
+ if (nmtst_get_rand_one_case_in(2))
nm_l3_config_data_seal(l3cd);
l3cd_a = g_steal_pointer(&l3cd);
break;
}
}
- acd_timeout_msec = (f->test_idx == 3) ? 2000u : 0u;
+ nm_l3_config_data_log(l3cd_a, "l3cd_a", "platform-test: l3cd_a: ", LOGL_DEBUG, LOGD_PLATFORM);
if (l3cd_a) {
nm_l3cfg_add_config(l3cfg0,
@@ -286,7 +426,8 @@ test_l3cfg(gconstpointer test_data)
NM_PLATFORM_ROUTE_METRIC_DEFAULT_IP6,
0,
0,
- acd_timeout_msec,
+ tdata->acd_defend_type_a,
+ tdata->acd_timeout_msec_a,
NM_L3_CONFIG_MERGE_FLAGS_NONE);
}
@@ -306,24 +447,32 @@ test_l3cfg(gconstpointer test_data)
TRUE,
TRUE,
TRUE,
- NM_IN_SET(f->test_idx, 2) ? "192.167.133.45" : NULL,
- NM_IN_SET(f->test_idx, 2, 3) ? "1:2:3:4::45" : NULL);
+ NM_IN_SET(f->test_idx, 2) ? "192.168.133.45" : NULL,
+ NM_IN_SET(f->test_idx, 2, 3, 4) ? "1:2:3:4::45" : NULL);
if (NM_IN_SET(f->test_idx, 1, 2)) {
_test_l3cfg_data_set_notify_type(tdata, TEST_L3CFG_NOTIFY_TYPE_IDLE_ASSERT_NO_SIGNAL);
_LOGT("poll 1 start");
- nmtst_main_context_iterate_until(NULL, nmtst_get_rand_uint32() % 5000u, FALSE);
+ nmtst_main_context_iterate_until(NULL,
+ nmtst_get_rand_uint32() % (ACD_TIMEOUT_BASE_MSEC * 5u),
+ FALSE);
_LOGT("poll 1 end");
_test_l3cfg_data_set_notify_type(tdata, TEST_L3CFG_NOTIFY_TYPE_NONE);
}
- if (NM_IN_SET(f->test_idx, 3)) {
+ if (NM_IN_SET(f->test_idx, 3, 4)) {
_test_l3cfg_data_set_notify_type(tdata, TEST_L3CFG_NOTIFY_TYPE_WAIT_FOR_ACD_READY_1);
- tdata->notify_data.wait_for_acd_ready_1.expected_probe_result = TRUE;
+ tdata->notify_result.wait_for_acd_ready_1.expected_probe_result = TRUE;
_LOGT("poll 2 start");
- nmtst_main_context_iterate_until(NULL, 2500u + (nmtst_get_rand_uint32() % 4000u), FALSE);
+ nmtst_main_context_iterate_until(
+ NULL,
+ ACD_TIMEOUT_BASE_MSEC * 3u / 2u
+ + (nmtst_get_rand_uint32() % (2u * ACD_TIMEOUT_BASE_MSEC)),
+ FALSE);
_LOGT("poll 2 end");
- g_assert_cmpint(tdata->notify_data.wait_for_acd_ready_1.cb_count, ==, 2);
+ g_assert_cmpint(tdata->notify_result.wait_for_acd_ready_1.cb_count,
+ ==,
+ 1 + 2 + (tdata->add_addr4_101 ? (tdata->has_addr4_101 ? 1 : 3) : 0));
_test_l3cfg_data_set_notify_type(tdata, TEST_L3CFG_NOTIFY_TYPE_NONE);
}
@@ -332,15 +481,296 @@ test_l3cfg(gconstpointer test_data)
nm_l3cfg_commit_type_unregister(l3cfg0, commit_type_1);
nm_l3cfg_commit_type_unregister(l3cfg0, commit_type_2);
- if ((nmtst_get_rand_uint32() % 3) == 0)
+ if (nmtst_get_rand_one_case_in(3))
_test_fixture_1_teardown(&test_fixture);
nm_l3cfg_remove_config_all(l3cfg0, GINT_TO_POINTER('a'), FALSE);
- if ((nmtst_get_rand_uint32() % 3) == 0)
+ if (nmtst_get_rand_one_case_in(3))
_test_fixture_1_teardown(&test_fixture);
- _LOGD("test end (/l3cfg/%d)", f->test_idx);
+ _LOGD("test end (/l3cfg/%d)", TEST_IDX);
+}
+
+/*****************************************************************************/
+
+#define L3IPV4LL_ACD_TIMEOUT_MSEC 1500u
+
+typedef struct {
+ const TestFixture1 * f;
+ NML3CfgCommitTypeHandle *l3cfg_commit_type_1;
+ guint acd_timeout_msec;
+ NML3IPv4LL * l3ipv4ll;
+ bool has_addr4_101;
+ gint8 ready_seen;
+ gint8 addr_commit;
+ in_addr_t addr_commit_addr;
+ bool add_conflict_checked : 1;
+ bool add_conflict_done;
+} TestL3IPv4LLData;
+
+static gconstpointer
+TEST_L3_IPV4LL_TAG(const TestL3IPv4LLData *tdata, guint offset)
+{
+ return (&(((const char *) tdata)[offset]));
+}
+
+static void
+_test_l3_ipv4ll_maybe_add_addr_4(const TestL3IPv4LLData *tdata,
+ int ifindex,
+ guint one_case_in_num,
+ bool * has_addr,
+ const char * addr)
+{
+ if (has_addr) {
+ if (*has_addr || !nmtst_get_rand_one_case_in(one_case_in_num))
+ return;
+ *has_addr = TRUE;
+ }
+
+ if (ifindex == 0)
+ ifindex = tdata->f->ifindex0;
+
+ g_assert_cmpint(ifindex, >, 0);
+
+ _LOGT("add test address: %s on ifindex=%d", addr, ifindex);
+
+ nmtstp_ip4_address_add(tdata->f->platform,
+ -1,
+ ifindex,
+ nmtst_inet4_from_string(addr),
+ 24,
+ nmtst_inet4_from_string(addr),
+ 100000,
+ 0,
+ 0,
+ NULL);
+}
+
+static void
+_test_l3_ipv4ll_signal_notify(NML3Cfg * l3cfg,
+ const NML3ConfigNotifyData *notify_data,
+ TestL3IPv4LLData * tdata)
+{
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+
+ g_assert(NM_IS_L3CFG(l3cfg));
+ g_assert(tdata);
+ g_assert(notify_data);
+ g_assert(_NM_INT_NOT_NEGATIVE(notify_data->notify_type));
+ g_assert(notify_data->notify_type < _NM_L3_CONFIG_NOTIFY_TYPE_NUM);
+
+ if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_IPV4LL_EVENT) {
+ g_assert(tdata->l3ipv4ll == notify_data->ipv4ll_event.ipv4ll);
+ g_assert(NM_IN_SET(tdata->ready_seen, 0, 1));
+ g_assert(NM_IN_SET(tdata->addr_commit, 0, 1));
+
+ if (nm_l3_ipv4ll_get_state(tdata->l3ipv4ll) == NM_L3_IPV4LL_STATE_READY) {
+ g_assert_cmpint(tdata->ready_seen, ==, 0);
+ g_assert_cmpint(tdata->addr_commit, ==, 0);
+ tdata->ready_seen++;
+
+ if (tdata->f->test_idx == 2 && nmtst_get_rand_bool()) {
+ tdata->addr_commit++;
+ tdata->addr_commit_addr = nm_l3_ipv4ll_get_addr(tdata->l3ipv4ll);
+ g_assert(nm_utils_ip4_address_is_link_local(tdata->addr_commit_addr));
+ _LOGT("add address %s that passed ACD",
+ _nm_utils_inet4_ntop(tdata->addr_commit_addr, sbuf_addr));
+ if (!nm_l3cfg_add_config(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll),
+ TEST_L3_IPV4LL_TAG(tdata, 1),
+ nmtst_get_rand_bool(),
+ nm_l3_ipv4ll_get_l3cd(tdata->l3ipv4ll),
+ NM_L3CFG_CONFIG_PRIORITY_IPV4LL,
+ 0,
+ 0,
+ 104,
+ 105,
+ 0,
+ 0,
+ NM_L3_ACD_DEFEND_TYPE_ONCE,
+ nmtst_get_rand_bool() ? tdata->acd_timeout_msec : 0u,
+ NM_L3_CONFIG_MERGE_FLAGS_NONE))
+ g_assert_not_reached();
+ nm_l3cfg_commit_on_idle_schedule(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll));
+
+ tdata->l3cfg_commit_type_1 =
+ nm_l3cfg_commit_type_register(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll),
+ NM_L3_CFG_COMMIT_TYPE_UPDATE,
+ tdata->l3cfg_commit_type_1);
+ }
+ } else if (nm_l3_ipv4ll_get_state(tdata->l3ipv4ll) != NM_L3_IPV4LL_STATE_DEFENDING
+ && tdata->ready_seen > 0) {
+ g_assert_cmpint(tdata->ready_seen, ==, 1);
+ tdata->ready_seen--;
+ if (tdata->addr_commit > 0) {
+ g_assert_cmpint(tdata->addr_commit, ==, 1);
+ tdata->addr_commit--;
+ g_assert(nm_utils_ip4_address_is_link_local(tdata->addr_commit_addr));
+ _LOGT("remove address %s that previously passed ACD",
+ _nm_utils_inet4_ntop(tdata->addr_commit_addr, sbuf_addr));
+ if (!nm_l3cfg_remove_config_all(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll),
+ TEST_L3_IPV4LL_TAG(tdata, 1),
+ FALSE))
+ g_assert_not_reached();
+ nm_l3cfg_commit_on_idle_schedule(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll));
+ nm_l3cfg_commit_type_unregister(nm_l3_ipv4ll_get_l3cfg(tdata->l3ipv4ll),
+ g_steal_pointer(&tdata->l3cfg_commit_type_1));
+ }
+ }
+ return;
+ }
+}
+
+static void
+test_l3_ipv4ll(gconstpointer test_data)
+{
+ const int TEST_IDX = GPOINTER_TO_INT(test_data);
+ nm_auto(_test_fixture_1_teardown) TestFixture1 test_fixture = {};
+ const TestFixture1 * f;
+ gs_unref_object NML3Cfg *l3cfg0 = NULL;
+ TestL3IPv4LLData tdata_stack = {
+ .f = NULL,
+ };
+ TestL3IPv4LLData *const tdata = &tdata_stack;
+ NMTstpAcdDefender * acd_defender_1 = NULL;
+ NMTstpAcdDefender * acd_defender_2 = NULL;
+ nm_auto_unref_l3ipv4ll NML3IPv4LL * l3ipv4ll = NULL;
+ gint64 start_time_msec;
+ gint64 total_poll_time_msec;
+ nm_auto_remove_l3ipv4ll_registration NML3IPv4LLRegistration *l3ipv4ll_reg = NULL;
+ char sbuf_addr[NM_UTILS_INET_ADDRSTRLEN];
+
+ _LOGD("test start (/l3-ipv4ll/%d)", TEST_IDX);
+
+ if (nmtst_test_quick()) {
+ gs_free char *msg =
+ g_strdup_printf("Skipping test: don't run long running test %s (NMTST_DEBUG=slow)\n",
+ g_get_prgname() ?: "test-l3-ipv4ll");
+
+ g_test_skip(msg);
+ return;
+ }
+
+ f = _test_fixture_1_setup(&test_fixture, TEST_IDX);
+
+ tdata->f = f;
+
+ if (tdata->f->test_idx == 1)
+ tdata->acd_timeout_msec = 0;
+ else
+ tdata->acd_timeout_msec = L3IPV4LL_ACD_TIMEOUT_MSEC;
+
+ _test_l3_ipv4ll_maybe_add_addr_4(tdata, 0, 4, &tdata->has_addr4_101, "192.168.133.101");
+
+ l3cfg0 = _netns_access_l3cfg(f->netns, f->ifindex0);
+
+ g_signal_connect(l3cfg0,
+ NM_L3CFG_SIGNAL_NOTIFY,
+ G_CALLBACK(_test_l3_ipv4ll_signal_notify),
+ tdata);
+
+ l3ipv4ll = nm_l3_ipv4ll_new(l3cfg0);
+
+ tdata->l3ipv4ll = l3ipv4ll;
+
+ g_assert_cmpint(nm_l3_ipv4ll_get_ifindex(l3ipv4ll), ==, f->ifindex0);
+ g_assert_cmpint(nm_l3_ipv4ll_get_state(l3ipv4ll), ==, NM_L3_IPV4LL_STATE_DISABLED);
+ g_assert_cmpint(nm_l3_ipv4ll_get_addr(l3ipv4ll), ==, 0u);
+
+ if (tdata->f->test_idx == 1) {
+ if (nmtst_get_rand_one_case_in(2))
+ l3ipv4ll_reg = nm_l3_ipv4ll_register_new(l3ipv4ll, tdata->acd_timeout_msec);
+ } else
+ l3ipv4ll_reg = nm_l3_ipv4ll_register_new(l3ipv4ll, tdata->acd_timeout_msec);
+
+ g_assert(tdata->acd_timeout_msec == 0 || l3ipv4ll_reg);
+ g_assert(!l3ipv4ll_reg || l3ipv4ll == nm_l3_ipv4ll_register_get_instance(l3ipv4ll_reg));
+
+ if (tdata->acd_timeout_msec == 0) {
+ g_assert_cmpint(nm_l3_ipv4ll_get_state(l3ipv4ll), ==, NM_L3_IPV4LL_STATE_DISABLED);
+ g_assert_cmpint(nm_l3_ipv4ll_get_addr(l3ipv4ll), ==, 0u);
+ } else {
+ g_assert_cmpint(nm_l3_ipv4ll_get_state(l3ipv4ll), ==, NM_L3_IPV4LL_STATE_PROBING);
+ if (f->test_idx == 1) {
+ g_assert_cmpint(nm_l3_ipv4ll_get_addr(l3ipv4ll),
+ ==,
+ nmtst_inet4_from_string("169.254.30.158"));
+ } else {
+ g_assert_cmpint(nm_l3_ipv4ll_get_addr(l3ipv4ll),
+ ==,
+ nmtst_inet4_from_string("169.254.17.45"));
+ }
+ g_assert(nm_l3_ipv4ll_get_l3cd(l3ipv4ll));
+ }
+
+ _test_l3_ipv4ll_maybe_add_addr_4(tdata, 0, 4, &tdata->has_addr4_101, "192.168.133.101");
+
+ if (tdata->f->test_idx == 2 && nmtst_get_rand_one_case_in(3)) {
+ in_addr_t a = nm_l3_ipv4ll_get_addr(l3ipv4ll);
+
+ g_assert(nm_utils_ip4_address_is_link_local(a));
+ _test_l3_ipv4ll_maybe_add_addr_4(tdata,
+ tdata->f->ifindex1,
+ 2,
+ &tdata->add_conflict_done,
+ _nm_utils_inet4_ntop(a, sbuf_addr));
+ g_assert_cmpint(tdata->f->hwaddr1.len, ==, sizeof(NMEtherAddr));
+ acd_defender_2 =
+ nmtstp_acd_defender_new(tdata->f->ifindex1, a, &tdata->f->hwaddr1.ether_addr);
+ }
+
+ start_time_msec = nm_utils_get_monotonic_timestamp_msec();
+ total_poll_time_msec =
+ (L3IPV4LL_ACD_TIMEOUT_MSEC * 3 / 2) + (nmtst_get_rand_uint32() % L3IPV4LL_ACD_TIMEOUT_MSEC);
+ _LOGT("poll 1 start (wait %" G_GINT64_FORMAT " msec)", total_poll_time_msec);
+ while (TRUE) {
+ gint64 next_timeout_msec;
+
+ next_timeout_msec =
+ start_time_msec + total_poll_time_msec - nm_utils_get_monotonic_timestamp_msec();
+ if (next_timeout_msec <= 0)
+ break;
+
+ next_timeout_msec = NM_MIN(next_timeout_msec, nmtst_get_rand_uint32() % 1000u);
+ nmtst_main_context_iterate_until(NULL, next_timeout_msec, FALSE);
+ _LOGT("poll 1 intermezzo");
+
+ _test_l3_ipv4ll_maybe_add_addr_4(tdata,
+ 0,
+ 1 + total_poll_time_msec / 1000,
+ &tdata->has_addr4_101,
+ "192.168.133.101");
+
+ if (tdata->addr_commit == 1 && !tdata->add_conflict_checked) {
+ tdata->add_conflict_checked = TRUE;
+ _test_l3_ipv4ll_maybe_add_addr_4(
+ tdata,
+ tdata->f->ifindex1,
+ 2,
+ &tdata->add_conflict_done,
+ _nm_utils_inet4_ntop(tdata->addr_commit_addr, sbuf_addr));
+ if (tdata->add_conflict_done)
+ total_poll_time_msec += L3IPV4LL_ACD_TIMEOUT_MSEC / 2;
+ g_assert_cmpint(tdata->f->hwaddr1.len, ==, sizeof(NMEtherAddr));
+ acd_defender_2 = nmtstp_acd_defender_new(tdata->f->ifindex1,
+ tdata->addr_commit_addr,
+ &tdata->f->hwaddr1.ether_addr);
+ }
+ }
+ _LOGT("poll 1 end");
+
+ if (tdata->addr_commit || nmtst_get_rand_bool()) {
+ nm_l3cfg_remove_config_all(nm_l3_ipv4ll_get_l3cfg(l3ipv4ll),
+ TEST_L3_IPV4LL_TAG(tdata, 1),
+ FALSE);
+ }
+
+ nmtstp_acd_defender_destroy(g_steal_pointer(&acd_defender_1));
+ nmtstp_acd_defender_destroy(g_steal_pointer(&acd_defender_2));
+
+ nm_l3cfg_commit_type_unregister(l3cfg0, g_steal_pointer(&tdata->l3cfg_commit_type_1));
+
+ g_signal_handlers_disconnect_by_func(l3cfg0, G_CALLBACK(_test_l3_ipv4ll_signal_notify), tdata);
}
/*****************************************************************************/
@@ -350,7 +780,7 @@ NMTstpSetupFunc const _nmtstp_setup_platform_func = nm_linux_platform_setup;
void
_nmtstp_init_tests(int *argc, char ***argv)
{
- nmtst_init_with_logging(argc, argv, NULL, "ALL");
+ nmtst_init_with_logging(argc, argv, "ERR", "ALL");
}
void
@@ -359,4 +789,7 @@ _nmtstp_setup_tests(void)
g_test_add_data_func("/l3cfg/1", GINT_TO_POINTER(1), test_l3cfg);
g_test_add_data_func("/l3cfg/2", GINT_TO_POINTER(2), test_l3cfg);
g_test_add_data_func("/l3cfg/3", GINT_TO_POINTER(3), test_l3cfg);
+ g_test_add_data_func("/l3cfg/4", GINT_TO_POINTER(4), test_l3cfg);
+ g_test_add_data_func("/l3-ipv4ll/1", GINT_TO_POINTER(1), test_l3_ipv4ll);
+ g_test_add_data_func("/l3-ipv4ll/2", GINT_TO_POINTER(2), test_l3_ipv4ll);
}
diff --git a/src/vpn/nm-vpn-connection.c b/src/vpn/nm-vpn-connection.c
index 68c66af7d7..0d4b12bc12 100644
--- a/src/vpn/nm-vpn-connection.c
+++ b/src/vpn/nm-vpn-connection.c
@@ -862,22 +862,22 @@ nm_vpn_connection_new(NMSettingsConnection * settings_connection,
g_return_val_if_fail(NM_IS_DEVICE(parent_device), NULL);
g_return_val_if_fail(specific_object, NULL);
- return (NMVpnConnection *) g_object_new(NM_TYPE_VPN_CONNECTION,
- NM_ACTIVE_CONNECTION_INT_SETTINGS_CONNECTION,
- settings_connection,
- NM_ACTIVE_CONNECTION_INT_DEVICE,
- parent_device,
- NM_ACTIVE_CONNECTION_SPECIFIC_OBJECT,
- specific_object,
- NM_ACTIVE_CONNECTION_INT_SUBJECT,
- subject,
- NM_ACTIVE_CONNECTION_INT_ACTIVATION_REASON,
- activation_reason,
- NM_ACTIVE_CONNECTION_VPN,
- TRUE,
- NM_ACTIVE_CONNECTION_STATE_FLAGS,
- (guint) initial_state_flags,
- NULL);
+ return g_object_new(NM_TYPE_VPN_CONNECTION,
+ NM_ACTIVE_CONNECTION_INT_SETTINGS_CONNECTION,
+ settings_connection,
+ NM_ACTIVE_CONNECTION_INT_DEVICE,
+ parent_device,
+ NM_ACTIVE_CONNECTION_SPECIFIC_OBJECT,
+ specific_object,
+ NM_ACTIVE_CONNECTION_INT_SUBJECT,
+ subject,
+ NM_ACTIVE_CONNECTION_INT_ACTIVATION_REASON,
+ activation_reason,
+ NM_ACTIVE_CONNECTION_VPN,
+ TRUE,
+ NM_ACTIVE_CONNECTION_STATE_FLAGS,
+ (guint) initial_state_flags,
+ NULL);
}
const char *
diff --git a/tools/check-compare-generated.sh b/tools/check-compare-generated.sh
new file mode 100755
index 0000000000..44b70f95c6
--- /dev/null
+++ b/tools/check-compare-generated.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+srcdir="$1"
+builddir="$2"
+doc_h="$3"
+
+[ -n "$NMTST_NO_CHECK_SETTINGS_DOCS" ] && exit 0
+
+cmp -s "${srcdir}/${doc_h}.in" "${builddir}/${doc_h}" && exit 0
+
+if [ "$NM_TEST_REGENERATE" = 1 ] ; then
+ cp -f "${builddir}/${doc_h}" "${srcdir}/${doc_h}.in"
+else
+ echo "*** Error: the generated file '${builddir}/${doc_h}' differs from the source file '${srcdir}/${doc_h}.in'. You probably should copy the generated file over to the source file. You can skip this test by setting NMTST_NO_CHECK_SETTINGS_DOCS=yes. You can also automatically copy the file by rerunning the test with NM_TEST_REGENERATE=1"
+ exit 1
+fi
diff --git a/tools/check-config-options.sh b/tools/check-config-options.sh
index 7a775955bb..d9d4431ee8 100755
--- a/tools/check-config-options.sh
+++ b/tools/check-config-options.sh
@@ -18,8 +18,8 @@ get_missing_options()
get_src_con_defaults()
{
- sed -ne 's/.*\<NM_CON_DEFAULT\s*("\([^"]*\)").*/\1/p' $(find "$srcdir/src/" -name \*.c ! -name test\*.c)
- sed -ne 's/.*\<NM_CON_DEFAULT_NOP\s*("\([^"]*\)").*/\1/p' $(find "$srcdir/src/" -name \*.c ! -name test\*.c)
+ sed -n 's/\<NM_CON_DEFAULT/\n\0/gp' $(find "$srcdir/src/" -name \*.c ! -name test\*.c) |
+ sed -n 's/.*\<NM_CON_DEFAULT\(_NOP\)\?\s*("\([^"]*\)").*/\2/p'
}
get_man_con_defaults()
diff --git a/tools/check-gitlab-ci.sh b/tools/check-gitlab-ci.sh
new file mode 100755
index 0000000000..da5fcc597b
--- /dev/null
+++ b/tools/check-gitlab-ci.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+set -e
+
+if [ $# -eq 0 ] ; then
+ BASEDIR="$(dirname "$(readlink -f "$0")")/.."
+elif [ $# -eq 1 ] ; then
+ BASEDIR="$1"
+else
+ echo "invalid arguments"
+ exit 1
+fi
+
+cd "$BASEDIR"
+
+if ! [ -f ./.gitlab-ci.yml ] ; then
+ # we have no gitlab-ci. Probably this is not a git-checkout
+ # but a dist'ed source-tree. Nothing to check.
+ exit 0
+fi
+
+if ! ci-fairy --help 2>&1 >/dev/null ; then
+ # ci-fairy not available. Cannot check.
+ exit 0
+fi
+
+
+if [ "$NM_TEST_REGENERATE" == 1 ] ; then
+ ci-fairy generate-template
+ exit 0
+fi
+
+diff "./.gitlab-ci.yml" <(ci-fairy generate-template -o /dev/stdout)
diff --git a/tools/check-settings-docs.sh b/tools/check-settings-docs.sh
deleted file mode 100755
index 8695ccc030..0000000000
--- a/tools/check-settings-docs.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-srcdir=$1
-builddir=$2
-doc_h=$3
-
-if [ -z "$NMTST_NO_CHECK_SETTINGS_DOCS" ] ; then
- if ! cmp -s "${srcdir}/${doc_h}.in" "${builddir}/${doc_h}"; then
- if [ "$NM_TEST_REGENERATE" = 1 ] ; then
- cp -f "${builddir}/${doc_h}" "${srcdir}/${doc_h}.in"
- else
- echo "*** Error: the generated file '${builddir}/${doc_h}' differs from the source file '${srcdir}/${doc_h}.in'. You probably should copy the generated file over to the source file. You can skip this test by setting NMTST_NO_CHECK_SETTINGS_DOCS=yes. You can also automatically copy the file by rerunning the test with NM_TEST_REGENERATE=1"
- exit 1
- fi
- fi
-fi
-
-exit 0
-
diff --git a/tools/test-networkmanager-service.py b/tools/test-networkmanager-service.py
index 359c5e5ded..6d85a02dae 100755
--- a/tools/test-networkmanager-service.py
+++ b/tools/test-networkmanager-service.py
@@ -299,6 +299,8 @@ class Util:
return GLib.Variant("u", int(val))
if isinstance(val, dbus.UInt64):
return GLib.Variant("t", int(val))
+ if isinstance(val, dbus.Int32):
+ return GLib.Variant("i", int(val))
if isinstance(val, dbus.Boolean):
return GLib.Variant("b", bool(val))
if isinstance(val, dbus.Byte):
@@ -389,6 +391,7 @@ IFACE_SETTINGS = "org.freedesktop.NetworkManager.Settings"
IFACE_AGENT_MANAGER = "org.freedesktop.NetworkManager.AgentManager"
IFACE_AGENT = "org.freedesktop.NetworkManager.SecretAgent"
IFACE_WIRED = "org.freedesktop.NetworkManager.Device.Wired"
+IFACE_MODEM = "org.freedesktop.NetworkManager.Device.Modem"
IFACE_VLAN = "org.freedesktop.NetworkManager.Device.Vlan"
IFACE_WIFI_AP = "org.freedesktop.NetworkManager.AccessPoint"
IFACE_ACTIVE_CONNECTION = "org.freedesktop.NetworkManager.Connection.Active"
@@ -404,46 +407,74 @@ IFACE_DHCP6_CONFIG = "org.freedesktop.NetworkManager.DHCP6Config"
class BusErr:
class UnknownInterfaceException(dbus.DBusException):
- _dbus_error_name = IFACE_DBUS + ".UnknownInterface"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.UnknownInterface".format(IFACE_DBUS)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class UnknownPropertyException(dbus.DBusException):
- _dbus_error_name = IFACE_DBUS + ".UnknownProperty"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.UnknownProperty".format(IFACE_DBUS)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class InvalidPropertyException(dbus.DBusException):
- _dbus_error_name = IFACE_CONNECTION + ".InvalidProperty"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.InvalidProperty".format(IFACE_CONNECTION)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class MissingPropertyException(dbus.DBusException):
- _dbus_error_name = IFACE_CONNECTION + ".MissingProperty"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.MissingProperty".format(IFACE_CONNECTION)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class InvalidSettingException(dbus.DBusException):
- _dbus_error_name = IFACE_CONNECTION + ".InvalidSetting"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.InvalidSetting".format(IFACE_CONNECTION)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class MissingSettingException(dbus.DBusException):
- _dbus_error_name = IFACE_CONNECTION + ".MissingSetting"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.MissingSetting".format(IFACE_CONNECTION)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class NotSoftwareException(dbus.DBusException):
- _dbus_error_name = IFACE_DEVICE + ".NotSoftware"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.NotSoftware".format(IFACE_DEVICE)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class ApNotFoundException(dbus.DBusException):
- _dbus_error_name = IFACE_WIFI + ".AccessPointNotFound"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.AccessPointNotFound".format(IFACE_WIFI)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class PermissionDeniedException(dbus.DBusException):
- _dbus_error_name = IFACE_NM + ".PermissionDenied"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.PermissionDenied".format(IFACE_NM)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class UnknownDeviceException(dbus.DBusException):
- _dbus_error_name = IFACE_NM + ".UnknownDevice"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.UnknownDevice".format(IFACE_NM)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class UnknownConnectionException(dbus.DBusException):
- _dbus_error_name = IFACE_NM + ".UnknownConnection"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.UnknownConnection".format(IFACE_NM)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class InvalidHostnameException(dbus.DBusException):
- _dbus_error_name = IFACE_SETTINGS + ".InvalidHostname"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.InvalidHostname".format(IFACE_SETTINGS)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class NoSecretsException(dbus.DBusException):
- _dbus_error_name = IFACE_AGENT_MANAGER + ".NoSecrets"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.NoSecrets".format(IFACE_AGENT_MANAGER)
+ dbus.DBusException.__init__(self, *args, **kwargs)
class UserCanceledException(dbus.DBusException):
- _dbus_error_name = IFACE_AGENT_MANAGER + ".UserCanceled"
+ def __init__(self, *args, **kwargs):
+ self._dbus_error_name = "{}.UserCanceled".format(IFACE_AGENT_MANAGER)
+ dbus.DBusException.__init__(self, *args, **kwargs)
@staticmethod
def from_nmerror(e):
@@ -778,6 +809,7 @@ class ExportedObj(dbus.service.Object):
PRP_DEVICE_UDI = "Udi"
PRP_DEVICE_IFACE = "Interface"
+PRP_DEVICE_IPIFACE = "IpInterface"
PRP_DEVICE_DRIVER = "Driver"
PRP_DEVICE_STATE = "State"
PRP_DEVICE_STATE_REASON = "StateReason"
@@ -813,9 +845,15 @@ class Device(ExportedObj):
self.prp_state = NM.DeviceState.UNAVAILABLE
+ if devtype == NM.DeviceType.MODEM:
+ udi = "/org/freedesktop/ModemManager1/Modem/0"
+ else:
+ udi = "/sys/devices/virtual/%s" % iface
+
props = {
- PRP_DEVICE_UDI: "/sys/devices/virtual/%s" % (iface),
+ PRP_DEVICE_UDI: udi,
PRP_DEVICE_IFACE: iface,
+ PRP_DEVICE_IPIFACE: iface,
PRP_DEVICE_DRIVER: "virtual",
PRP_DEVICE_STATE: dbus.UInt32(self.prp_state),
PRP_DEVICE_STATE_REASON: dbus.Struct(
@@ -1018,10 +1056,32 @@ class Device(ExportedObj):
raise BusErr.NotSoftwareException()
pass
+ @dbus.service.signal(IFACE_DEVICE, signature="uuu")
+ def StateChanged(self, new_state, old_state, reason):
+ pass
+
@dbus.service.signal(IFACE_DEVICE, signature="a{sv}")
def PropertiesChanged(self, changed):
pass
+ def set_state(self, state, reason):
+ # libnm is plugged on notify::state-reason and not on state-changed dbus signal
+ # so we must simulate the change of property to emit a state-changed signal on libnm
+ self._dbus_property_set(IFACE_DEVICE, PRP_NM_STATE, dbus.UInt32(state))
+ self._dbus_property_set(
+ IFACE_DEVICE,
+ PRP_DEVICE_STATE_REASON,
+ (dbus.UInt32(state), dbus.UInt32(reason)),
+ )
+ old_state = self.prp_state
+ self.prp_state = state
+ self.StateChanged(
+ dbus.UInt32(self.prp_state), dbus.UInt32(old_state), dbus.UInt32(reason)
+ )
+
+ def set_carrier_status(self, carrier_status):
+ self._dbus_property_set(IFACE_WIRED, PRP_WIRED_CARRIER, carrier_status)
+
def set_active_connection(self, ac):
self._dbus_property_set(IFACE_DEVICE, PRP_DEVICE_ACTIVE_CONNECTION, ac)
@@ -1048,6 +1108,14 @@ class Device(ExportedObj):
ExportedObj.to_path_array(self.available_connections_get()),
)
+ @dbus.service.method(IFACE_TEST, in_signature="", out_signature="")
+ def Start(self):
+ self.start()
+
+ @dbus.service.method(IFACE_TEST, in_signature="", out_signature="")
+ def Stop(self):
+ self.stop()
+
###############################################################################
@@ -1071,7 +1139,7 @@ class WiredDevice(Device):
PRP_WIRED_HW_ADDRESS: mac,
PRP_WIRED_PERM_HW_ADDRESS: mac,
PRP_WIRED_SPEED: dbus.UInt32(100),
- PRP_WIRED_CARRIER: False,
+ PRP_WIRED_CARRIER: True,
PRP_WIRED_S390_SUBCHANNELS: subchannels,
}
@@ -1083,6 +1151,30 @@ class WiredDevice(Device):
###############################################################################
+PM_CURRENT_CAPABILITIES = "CurrentCapabilities"
+PM_MODEM_CAPABILITIES = "ModemCapabilities"
+
+# capability to make device seen compatible with GSM connection
+NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS = 0x00000004
+
+
+class ModemDevice(Device):
+ def __init__(self, iface):
+ Device.__init__(self, iface, NM.DeviceType.MODEM)
+
+ props = {
+ PM_CURRENT_CAPABILITIES: dbus.UInt32(NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS),
+ PM_MODEM_CAPABILITIES: dbus.UInt32(0),
+ }
+
+ self.dbus_interface_add(IFACE_MODEM, props, ModemDevice.PropertiesChanged)
+
+ @dbus.service.signal(IFACE_MODEM, signature="a{sv}")
+ def PropertiesChanged(self, changed):
+ pass
+
+
+###############################################################################
PRP_VLAN_HW_ADDRESS = "HwAddress"
PRP_VLAN_CARRIER = "Carrier"
@@ -1331,6 +1423,7 @@ class ActiveConnection(ExportedObj):
self.is_vpn = con_inst.is_vpn()
self._activation_id = None
+ self._deactivation_id = None
s_con = con_inst.con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
@@ -1382,24 +1475,69 @@ class ActiveConnection(ExportedObj):
def _activation_step2(self):
assert self._activation_id is not None
self._activation_id = None
- self._set_state(
- NM.ActiveConnectionState.ACTIVATED, NM.ActiveConnectionStateReason.UNKNOWN
- )
+
+ s_con = self.con_inst.con_hash[NM.SETTING_CONNECTION_SETTING_NAME]
+ conn_id = s_con[NM.SETTING_CONNECTION_ID]
+
+ if gl.force_activation_failure.get(conn_id, False):
+ self._set_state(
+ NM.ActiveConnectionState.DEACTIVATED,
+ NM.ActiveConnectionStateReason.UNKNOWN,
+ )
+ self.device.set_state(NM.DeviceState.FAILED, NM.DeviceStateReason.UNKNOWN)
+ else:
+ self._set_state(
+ NM.ActiveConnectionState.ACTIVATED,
+ NM.ActiveConnectionStateReason.UNKNOWN,
+ )
+ self.device.set_state(NM.DeviceState.ACTIVATED, NM.DeviceStateReason.NONE)
return False
def _activation_step1(self):
assert self._activation_id is not None
self._activation_id = GLib.timeout_add(50, self._activation_step2)
self.device.set_active_connection(self)
+ self.device.set_state(NM.DeviceState.PREPARE, NM.DeviceStateReason.NONE)
self._set_state(
NM.ActiveConnectionState.ACTIVATING, NM.ActiveConnectionStateReason.UNKNOWN
)
return False
+ def _deactivation_step1(self):
+ assert self._deactivation_id is not None
+ self._deactivation_id = None
+ self.device.set_state(
+ NM.DeviceState.DISCONNECTED, NM.DeviceStateReason.USER_REQUESTED
+ )
+ self._set_state(
+ NM.ActiveConnectionState.DEACTIVATED,
+ NM.ActiveConnectionStateReason.USER_DISCONNECTED,
+ )
+
+ return False
+
+ def set_state(self, state, reason):
+ self._set_state(state, reason)
+
def start_activation(self):
assert self._activation_id is None
self._activation_id = GLib.timeout_add(50, self._activation_step1)
+ def start_deactivation(self):
+ assert self._deactivation_id is None
+ self._set_state(
+ NM.ActiveConnectionState.DEACTIVATING,
+ NM.ActiveConnectionStateReason.USER_DISCONNECTED,
+ )
+ self.device.set_state(
+ NM.DeviceState.DEACTIVATING, NM.DeviceStateReason.USER_REQUESTED
+ )
+ self._set_state(
+ NM.ActiveConnectionState.DEACTIVATING,
+ NM.ActiveConnectionStateReason.USER_DISCONNECTED,
+ )
+ self._deactivation_id = GLib.timeout_add(50, self._deactivation_step1)
+
@dbus.service.signal(IFACE_VPN_CONNECTION, signature="a{sv}")
def PropertiesChanged(self, changed):
pass
@@ -1587,7 +1725,16 @@ class NetworkManager(ExportedObj):
@dbus.service.method(dbus_interface=IFACE_NM, in_signature="o", out_signature="")
def DeactivateConnection(self, active_connection):
- pass
+ # Look for an active connection with the same object path
+ for ac in self.active_connections:
+ if ac.path == str(active_connection):
+ ac.activation_cancel()
+ ac.start_deactivation()
+ return
+
+ raise BusErr.UnknownConnectionException(
+ "Connection not found: %s" % str(active_connection)
+ )
@dbus.service.method(dbus_interface=IFACE_NM, in_signature="b", out_signature="")
def Sleep(self, do_sleep):
@@ -1778,6 +1925,11 @@ class NetworkManager(ExportedObj):
return ExportedObj.to_path(self.add_device(dev))
@dbus.service.method(IFACE_TEST, in_signature="s", out_signature="o")
+ def AddModemDevice(self, ifname):
+ dev = ModemDevice(ifname)
+ return ExportedObj.to_path(self.add_device(dev))
+
+ @dbus.service.method(IFACE_TEST, in_signature="s", out_signature="o")
def AddWifiDevice(self, ifname):
dev = WifiDevice(ifname)
return ExportedObj.to_path(self.add_device(dev))
@@ -1808,6 +1960,54 @@ class NetworkManager(ExportedObj):
def AddConnection(self, con_hash, do_verify_strict):
return gl.settings.add_connection(con_hash, do_verify_strict)
+ @dbus.service.method(dbus_interface=IFACE_TEST, in_signature="sb", out_signature="")
+ def SetActiveConnectionFailure(self, connection_id, failure):
+ gl.force_activation_failure[connection_id] = failure
+
+ @dbus.service.method(
+ dbus_interface=IFACE_TEST, in_signature="ouu", out_signature=""
+ )
+ def SetActiveConnectionState(self, devpath, state, reason):
+ for ac in reversed(self.active_connections):
+ if ac.device.path == devpath:
+ ac.set_state(state, reason)
+ return
+ raise BusErr.UnknownDeviceException(
+ "Device with iface '%s' not found" % devpath
+ )
+
+ @dbus.service.method(
+ dbus_interface=IFACE_TEST, in_signature="ouu", out_signature=""
+ )
+ def SetDeviceState(self, devpath, state, reason):
+ try:
+ nmstate = NM.DeviceState(state)
+ except ValueError as e:
+ raise BusErr.InvalidPropertyException("Invalid device state: " % e)
+
+ try:
+ nmreason = NM.DeviceStateReason(reason)
+ except ValueError as e:
+ raise BusErr.InvalidPropertyException("Invalid device state reason: " % e)
+
+ for d in self.devices:
+ if d.path == devpath:
+ d.set_state(nmstate, nmreason)
+ return
+ raise BusErr.UnknownDeviceException(
+ "Device with iface '%s' not found" % devpath
+ )
+
+ @dbus.service.method(dbus_interface=IFACE_TEST, in_signature="ob", out_signature="")
+ def SetCarrierStatus(self, devpath, status):
+ for d in self.devices:
+ if d.path == devpath:
+ d.set_carrier_status(status)
+ return
+ raise BusErr.UnknownDeviceException(
+ "Device with iface '%s' not found" % devpath
+ )
+
@dbus.service.method(
dbus_interface=IFACE_TEST, in_signature="sa{sa{sv}}b", out_signature=""
)
@@ -2007,6 +2207,12 @@ class Settings(ExportedObj):
def AddConnection(self, con_hash):
return self.add_connection(con_hash)
+ @dbus.service.method(
+ dbus_interface=IFACE_SETTINGS, in_signature="", out_signature="b"
+ )
+ def ReloadConnections(self):
+ return True
+
def add_connection(self, con_hash, do_verify_strict=True):
self.c_counter += 1
con_inst = Connection(self.c_counter, con_hash, do_verify_strict)
@@ -2280,6 +2486,10 @@ class IP4Config(ExportedObj):
for k, v in props.items():
self._dbus_property_set(IFACE_IP4_CONFIG, k, v)
+ @dbus.service.method(IFACE_TEST, in_signature="s", out_signature="")
+ def SetGateway(self, gateway):
+ self._dbus_property_set(IFACE_IP4_CONFIG, PRP_IP4_CONFIG_GATEWAY, gateway)
+
@dbus.service.signal(IFACE_IP4_CONFIG, signature="a{sv}")
def PropertiesChanged(self, path):
pass
@@ -2721,6 +2931,7 @@ def main():
gl.mainloop = GLib.MainLoop()
gl.bus = dbus.SessionBus()
+ gl.force_activation_failure = {}
gl.object_manager = ObjectManager("/org/freedesktop")
gl.manager = NetworkManager()