From 013a0dc9f97e7c8b720aa40f15b8398173d962a5 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Apr 10 2018 05:28:19 +0000 Subject: import NetworkManager-1.10.2-13.el7 --- diff --git a/.NetworkManager.metadata b/.NetworkManager.metadata index 23f4a1b..609fa38 100644 --- a/.NetworkManager.metadata +++ b/.NetworkManager.metadata @@ -1 +1 @@ -ef387c30c8fc0a1aea7c11dc6ef20afbb8c9616c SOURCES/NetworkManager-1.8.0.tar.xz +e4559b3656b1be83a712e6d1c296becd7ca84921 SOURCES/NetworkManager-1.10.2.tar.xz diff --git a/.gitignore b/.gitignore index c89fae3..fd9df0e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/NetworkManager-1.8.0.tar.xz +SOURCES/NetworkManager-1.10.2.tar.xz diff --git a/SOURCES/00-server.conf b/SOURCES/00-server.conf index eede0c8..ba3d29f 100644 --- a/SOURCES/00-server.conf +++ b/SOURCES/00-server.conf @@ -1,14 +1,8 @@ -# This configuration file, when placed into into -# /etc/NetworkManager/conf.d changes NetworkManager's behavior to +# This configuration file changes NetworkManager's behavior to # what's expected on "traditional UNIX server" type deployments. # # See "man NetworkManager.conf" for more information about these # and other keys. -# -# Do not edit this file; it will be overwritten on upgrades. If you -# want to override the values here, or set additional values, you can -# do so by adding another file (eg, "99-local.conf") to this directory -# and setting keys there. [main] # Do not do automatic (DHCP/SLAAC) configuration on ethernet devices diff --git a/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch b/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch index 5c73b5e..e645a74 100644 --- a/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch +++ b/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch @@ -1,21 +1,44 @@ -From 14dc1e18cf8a7595ca4d4b04203fc8ff7f0a29ca Mon Sep 17 00:00:00 2001 +From cf4fabd8dd1235312ebc21becda6378b770eb822 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Feb 2017 20:25:56 +0100 -Subject: [PATCH 1/1] Revert "device: change default value for - cloned-mac-address to "preserve" (bgo#770611)" +Subject: [PATCH] Revert "device: change default value for cloned-mac-address + to "preserve" (bgo#770611)" https://bugzilla.redhat.com/show_bug.cgi?id=1413312 This reverts commit fae5ecec5a4d9987a1915441602cb78275a9f490. --- - libnm-core/nm-setting-wired.c | 7 +++---- - libnm-core/nm-setting-wireless.c | 7 +++---- - man/NetworkManager.conf.xml | 4 ++-- - src/devices/nm-device.c | 3 ++- - 4 files changed, 10 insertions(+), 11 deletions(-) + clients/common/settings-docs.c.in | 4 ++-- + libnm-core/nm-setting-wired.c | 7 +++---- + libnm-core/nm-setting-wireless.c | 7 +++---- + man/NetworkManager.conf.xml | 4 ++-- + src/devices/nm-device.c | 3 ++- + 5 files changed, 12 insertions(+), 13 deletions(-) +diff --git a/clients/common/settings-docs.c.in b/clients/common/settings-docs.c.in +index bf544ab6e..12991cc06 100644 +--- a/clients/common/settings-docs.c.in ++++ b/clients/common/settings-docs.c.in +@@ -7,7 +7,7 @@ + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_BAND N_("802.11 frequency band of the network. One of \"a\" for 5GHz 802.11a or \"bg\" for 2.4GHz 802.11. This will lock associations to the Wi-Fi network to the specific band, i.e. if \"a\" is specified, the device will not associate with the same network in the 2.4GHz band even if the network's settings are compatible. This setting depends on specific driver capability and may not work with all drivers.") + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_BSSID N_("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.") + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_CHANNEL N_("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 \"band\" property to be set.") +-#define DESCRIBE_DOC_NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS N_("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 \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address of the device. \"random\" creates a random MAC address on each connect. \"stable\" 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 \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".") ++#define DESCRIBE_DOC_NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead of its permanent MAC address. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address of the device. \"random\" creates a random MAC address on each connect. \"stable\" 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 \"permanent\". On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".") + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", 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 \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" 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 \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" 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, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.") + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_HIDDEN N_("If TRUE, indicates this network is a non-broadcasting network that hides its SSID. In this case various workarounds may take place, such as probe-scanning the SSID for more reliable network discovery. However, these workarounds expose inherent insecurities with hidden SSID networks, and thus hidden SSID networks should be used with caution.") + #define DESCRIBE_DOC_NM_SETTING_WIRELESS_MAC_ADDRESS N_("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).") +@@ -87,7 +87,7 @@ + #define DESCRIBE_DOC_NM_SETTING_802_1X_SUBJECT_MATCH N_("Substring to be matched against the subject of the certificate presented by the authentication server. When unset, no verification of the authentication server certificate's subject is performed. This property provides little security, if any, and its use is deprecated in favor of NMSetting8021x:domain-suffix-match.") + #define DESCRIBE_DOC_NM_SETTING_802_1X_SYSTEM_CA_CERTS N_("When TRUE, overrides the \"ca-path\" and \"phase2-ca-path\" 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 \"ca-cert\" and \"phase2-ca-cert\" properties. If the path provided with --system-ca-path is rather a file name (bundle of trusted CA certificates), it overrides \"ca-cert\" and \"phase2-ca-cert\" properties instead (sets ca_cert/ca_cert2 options for wpa_supplicant).") + #define DESCRIBE_DOC_NM_SETTING_WIRED_AUTO_NEGOTIATE N_("If TRUE, enforce auto-negotiation of port speed and duplex mode. If FALSE, \"speed\" and \"duplex\" properties should be both set or link configuration will be skipped.") +-#define DESCRIBE_DOC_NM_SETTING_WIRED_CLONED_MAC_ADDRESS N_("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 \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address if the device has one (otherwise this is treated as \"preserve\"). \"random\" creates a random MAC address on each connect. \"stable\" 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 \"preserve\" (older versions of NetworkManager may use a different default value). On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".") ++#define DESCRIBE_DOC_NM_SETTING_WIRED_CLONED_MAC_ADDRESS N_("If specified, request that the device use this MAC address instead of its permanent MAC address. This is known as MAC cloning or spoofing. Beside explicitly specifying a MAC address, the special values \"preserve\", \"permanent\", \"random\" and \"stable\" are supported. \"preserve\" means not to touch the MAC address on activation. \"permanent\" means to use the permanent hardware address if the device has one (otherwise this is treated as \"preserve\"). \"random\" creates a random MAC address on each connect. \"stable\" 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 \"permanent\". On D-Bus, this field is expressed as \"assigned-mac-address\" or the deprecated \"cloned-mac-address\".") + #define DESCRIBE_DOC_NM_SETTING_WIRED_DUPLEX N_("Can be specified only when \"auto-negotiate\" is \"off\". In that case, statically configures the device to use that specified duplex mode, either \"half\" or \"full\". Must be set together with the \"speed\" property if specified. Before specifying a duplex mode be sure your device supports it.") + #define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", 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 \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" 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 \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" 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, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.") + #define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS N_("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).") diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c -index 5569f55..9bf8255 100644 +index 9d255e1d0..f36283a7e 100644 --- a/libnm-core/nm-setting-wired.c +++ b/libnm-core/nm-setting-wired.c @@ -1144,8 +1144,8 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class) @@ -27,9 +50,9 @@ index 5569f55..9bf8255 100644 + * If specified, request that the device use this MAC address instead of its + * permanent MAC address. This is known as MAC cloning or spoofing. * - * Beside explicitly specifing a MAC address, the special values "preserve", "permanent", + * Beside explicitly specifying a MAC address, the special values "preserve", "permanent", * "random" and "stable" are supported. -@@ -1156,8 +1156,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class) +@@ -1157,8 +1157,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class) * machine dependent key. * * If unspecified, the value can be overwritten via global defaults, see manual @@ -40,7 +63,7 @@ index 5569f55..9bf8255 100644 * On D-Bus, this field is expressed as "assigned-mac-address" or the deprecated * "cloned-mac-address". diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c -index 8ae84d4..316e812 100644 +index 0a3915bfc..8f457ffcc 100644 --- a/libnm-core/nm-setting-wireless.c +++ b/libnm-core/nm-setting-wireless.c @@ -1350,8 +1350,8 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_wireless_class) @@ -52,7 +75,7 @@ index 8ae84d4..316e812 100644 + * If specified, request that the device use this MAC address instead of its + * permanent MAC address. This is known as MAC cloning or spoofing. * - * Beside explicitly specifing a MAC address, the special values "preserve", "permanent", + * Beside explicitly specifying a MAC address, the special values "preserve", "permanent", * "random" and "stable" are supported. @@ -1362,8 +1362,7 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_wireless_class) * machine dependent key. @@ -65,10 +88,10 @@ index 8ae84d4..316e812 100644 * On D-Bus, this field is expressed as "assigned-mac-address" or the deprecated * "cloned-mac-address". diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml -index 658fd7c..2a8ba76 100644 +index 446540aa1..fc106a51e 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml -@@ -635,7 +635,7 @@ ipv6.ip6-privacy=0 +@@ -659,7 +659,7 @@ ipv6.ip6-privacy=0 ethernet.cloned-mac-address @@ -77,7 +100,7 @@ index 658fd7c..2a8ba76 100644 ethernet.generate-mac-address-mask -@@ -681,7 +681,7 @@ ipv6.ip6-privacy=0 +@@ -724,7 +724,7 @@ ipv6.ip6-privacy=0 wifi.cloned-mac-address @@ -87,10 +110,10 @@ index 658fd7c..2a8ba76 100644 wifi.generate-mac-address-mask diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index da581a0..9c30790 100644 +index afc81dcde..f75cc86e3 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c -@@ -13059,7 +13059,8 @@ _get_cloned_mac_address_setting (NMDevice *self, NMConnection *connection, gbool +@@ -13624,7 +13624,8 @@ _get_cloned_mac_address_setting (NMDevice *self, NMConnection *connection, gbool is_wifi ? "wifi.cloned-mac-address" : "ethernet.cloned-mac-address", self); @@ -101,5 +124,5 @@ index da581a0..9c30790 100644 if (!a) { if (is_wifi) { -- -2.9.3 +2.14.3 diff --git a/SOURCES/0002-nm-wait-online-not-require-nm-service-rh1520865.patch b/SOURCES/0002-nm-wait-online-not-require-nm-service-rh1520865.patch new file mode 100644 index 0000000..69296ab --- /dev/null +++ b/SOURCES/0002-nm-wait-online-not-require-nm-service-rh1520865.patch @@ -0,0 +1,39 @@ +From 5ad9e8b26c48b456251175eb211fd52f6b8d207c Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Fri, 8 Dec 2017 14:20:35 +0100 +Subject: [PATCH 1/1] Revert "systemd: let "NetworkManager-wait-online.service" + require "NetworkManager.service"" + +Upstream changes "NetworkManager-wait-online.service" to require NM. + +See + - https://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=28b97f02f64ecf94e22c8929dfd0ba64151bd9d3 + - https://bugzilla.redhat.com/show_bug.cgi?id=1452866#c50 + - https://github.com/systemd/systemd/commit/9db307820e6f545665fc87f255af737228b7183c + +This is a change in behavior, that we want to avoid for RHEL. +See also Fedora bug https://bugzilla.redhat.com/show_bug.cgi?id=1513613 + +This reverts commit 28b97f02f64ecf94e22c8929dfd0ba64151bd9d3. + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1520865 +--- + data/NetworkManager-wait-online.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/NetworkManager-wait-online.service.in b/data/NetworkManager-wait-online.service.in +index 896324685..1753d2039 100644 +--- a/data/NetworkManager-wait-online.service.in ++++ b/data/NetworkManager-wait-online.service.in +@@ -1,7 +1,7 @@ + [Unit] + Description=Network Manager Wait Online + Documentation=man:nm-online(1) +-Requires=NetworkManager.service ++Requisite=NetworkManager.service + After=NetworkManager.service + Before=network-online.target + +-- +2.14.3 + diff --git a/SOURCES/0002-utils-fix-maybe-uninitialized-in-nm-udev-utils.c.patch b/SOURCES/0002-utils-fix-maybe-uninitialized-in-nm-udev-utils.c.patch deleted file mode 100644 index ac84527..0000000 --- a/SOURCES/0002-utils-fix-maybe-uninitialized-in-nm-udev-utils.c.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 1ea56b82121d3f024859da41337cf2406e7f2e61 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 10 May 2017 15:31:15 +0200 -Subject: [PATCH 1/1] utils: fix maybe-uninitialized in "nm-udev-utils.c" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - - CC shared/nm-utils/libnm_core_libnm_core_la-nm-udev-utils.lo - In file included from ./shared/nm-utils/nm-glib.h:27:0, - from ./shared/nm-utils/nm-macros-internal.h:29, - from ./shared/nm-default.h:178, - from shared/nm-utils/nm-udev-utils.c:21: - shared/nm-utils/nm-udev-utils.c: In function ‘nm_udev_client_enumerate_new’: - ./shared/nm-utils/gsystem-local-alloc.h:53:50: error: ‘to_free’ may be used uninitialized in this function [-Werror=maybe-uninitialized] - GS_DEFINE_CLEANUP_FUNCTION(void*, gs_local_free, g_free) - ^~~~~~ - shared/nm-utils/nm-udev-utils.c:147:18: note: ‘to_free’ was declared here - gs_free char *to_free; - ^~~~~~~ - In file included from ./shared/nm-utils/nm-glib.h:27:0, - from ./shared/nm-utils/nm-macros-internal.h:29, - from ./shared/nm-default.h:178, - from shared/nm-utils/nm-udev-utils.c:21: - shared/nm-utils/nm-udev-utils.c: In function ‘nm_udev_client_new’: - ./shared/nm-utils/gsystem-local-alloc.h:53:50: error: ‘to_free’ may be used uninitialized in this function [-Werror=maybe-uninitialized] - GS_DEFINE_CLEANUP_FUNCTION(void*, gs_local_free, g_free) - ^~~~~~ - shared/nm-utils/nm-udev-utils.c:243:20: note: ‘to_free’ was declared here - gs_free char *to_free; - ^~~~~~~ - -Fixes: e32839838e5ea74ba490cf912e20939afa0e4f40 -(cherry picked from commit 0893c3756ef898f8fe6e2367d5167a345299dcd4) -(cherry picked from commit e2902f61a4462e6d197a20bf3d0ab996b64305b1) ---- - shared/nm-utils/nm-udev-utils.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/shared/nm-utils/nm-udev-utils.c b/shared/nm-utils/nm-udev-utils.c -index 5552d59..bf0ad5b 100644 ---- a/shared/nm-utils/nm-udev-utils.c -+++ b/shared/nm-utils/nm-udev-utils.c -@@ -144,7 +144,7 @@ nm_udev_utils_enumerate (struct udev *uclient, - for (n = 0; subsystems[n]; n++) { - const char *subsystem; - const char *devtype; -- gs_free char *to_free; -+ gs_free char *to_free = NULL; - - _subsystem_split (subsystems[n], &subsystem, &devtype, &to_free); - -@@ -240,7 +240,7 @@ nm_udev_client_new (const char *const*subsystems, - /* install subsystem filters to only wake up for certain events */ - for (n = 0; self->subsystems[n]; n++) { - if (self->monitor) { -- gs_free char *to_free; -+ gs_free char *to_free = NULL; - const char *subsystem; - const char *devtype; - --- -2.9.3 - diff --git a/SOURCES/0003-fix-device-run-state-unknown-rh1440171.patch b/SOURCES/0003-fix-device-run-state-unknown-rh1440171.patch deleted file mode 100644 index 7f2778b..0000000 --- a/SOURCES/0003-fix-device-run-state-unknown-rh1440171.patch +++ /dev/null @@ -1,140 +0,0 @@ -From f2d099c8c534ee426dbc31a3a61fcf27c18b92d8 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 11 May 2017 19:26:28 +0200 -Subject: [PATCH 1/2] core: cleanup logging reading device-state - -- print string value instead of numerical "managed" -- for missing state, print the same format. After all, - some defaults apply and it is interesting to know what - they are. - -(cherry picked from commit 81008c90ac9832ade1c9783078823fdd45221225) -(cherry picked from commit 8da225283b9977554a6b78e73dc03d22b8703027) ---- - src/nm-config.c | 30 +++++++++++++----------------- - 1 file changed, 13 insertions(+), 17 deletions(-) - -diff --git a/src/nm-config.c b/src/nm-config.c -index 2cdf855..954cad7 100644 ---- a/src/nm-config.c -+++ b/src/nm-config.c -@@ -1873,6 +1873,13 @@ _nm_config_state_set (NMConfig *self, - #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_PERM_HW_ADDR_FAKE "perm-hw-addr-fake" - #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID "connection-uuid" - -+NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType, -+ NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"), -+ NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNKNOWN, "unknown"), -+ NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED, "unmanaged"), -+ NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED, "managed"), -+); -+ - static NMConfigDeviceStateData * - _config_device_state_data_new (int ifindex, GKeyFile *kf) - { -@@ -1968,27 +1975,16 @@ nm_config_device_state_load (int ifindex) - - device_state = _config_device_state_data_new (ifindex, kf); - -- if (kf) { -- _LOGT ("device-state: read #%d (%s); managed=%d%s%s%s%s%s%s", -- ifindex, path, -- device_state->managed, -- NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""), -- NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", "")); -- } else { -- _LOGT ("device-state: read #%d (%s); no persistent state", -- ifindex, path); -- } -+ _LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s", -+ kf ? "read" : "miss", -+ ifindex, path, -+ _device_state_managed_type_to_str (device_state->managed), -+ NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""), -+ NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", "")); - - return device_state; - } - --NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType, -- NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"), -- NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNKNOWN, "unknown"), -- NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED, "unmanaged"), -- NM_UTILS_LOOKUP_STR_ITEM (NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED, "managed"), --); -- - gboolean - nm_config_device_state_write (int ifindex, - NMConfigDeviceStateManagedType managed, --- -2.9.3 - - -From 41ff1247a2dcfd6c781cbce2fac12ab6ae657727 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 11 May 2017 19:40:55 +0200 -Subject: [PATCH 2/2] core: fix reading device state file - -For manged=unknown, we don't write the value to the -device state keyfile. The results in an empty file, -or at least, a keyfile that doesn't have device.managed -set. - -On read, we must treat a missing device.managed flag as -unknown, and not as unmanaged. Otherwise, on restart -a device becomes marked as explicitly unmanaged. - -This was broken by commit 142ebb1 "core: only persist explicit managed -state in device's state file", where we started conditionally -to no longer write the managed state. - -Reported-by: Michael Biebl -Fixes: 142ebb10376ec592593f15b0359f38be89c97620 -(cherry picked from commit 348ffdec183ee198499dad1365906e8d16ff4122) -(cherry picked from commit 33d3ec3b3e5d2e737afc8db6c64850e67db5c12d) ---- - src/nm-config.c | 24 +++++++++++++----------- - 1 file changed, 13 insertions(+), 11 deletions(-) - -diff --git a/src/nm-config.c b/src/nm-config.c -index 954cad7..54ccf9a 100644 ---- a/src/nm-config.c -+++ b/src/nm-config.c -@@ -1894,21 +1894,23 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf) - nm_assert (ifindex > 0); - - if (kf) { -- gboolean managed; -- -- managed = nm_config_keyfile_get_boolean (kf, -- DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE, -- DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_MANAGED, -- FALSE); -- managed_type = managed -- ? NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED -- : NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED; -- -- if (managed) { -+ switch (nm_config_keyfile_get_boolean (kf, -+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE, -+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_MANAGED, -+ -1)) { -+ case TRUE: -+ managed_type = NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_MANAGED; - connection_uuid = nm_config_keyfile_get_value (kf, - DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE, - DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID, - NM_CONFIG_GET_VALUE_STRIP | NM_CONFIG_GET_VALUE_NO_EMPTY); -+ break; -+ case FALSE: -+ managed_type = NM_CONFIG_DEVICE_STATE_MANAGED_TYPE_UNMANAGED; -+ break; -+ case -1: -+ /* missing property in keyfile. */ -+ break; - } - - perm_hw_addr_fake = nm_config_keyfile_get_value (kf, --- -2.9.3 - diff --git a/SOURCES/0003-po-import-translations-rh1481186.patch b/SOURCES/0003-po-import-translations-rh1481186.patch new file mode 100644 index 0000000..165b2d4 --- /dev/null +++ b/SOURCES/0003-po-import-translations-rh1481186.patch @@ -0,0 +1,56913 @@ +From b69f6c9e747149e18ef4b6fc88b81b4f2d9837b1 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Tue, 12 Dec 2017 10:46:10 +0100 +Subject: [PATCH 1/3] po: add zanata.xml + +--- + zanata.xml | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + create mode 100644 zanata.xml + +diff --git a/zanata.xml b/zanata.xml +new file mode 100644 +index 0000000..c3baa18 +--- /dev/null ++++ b/zanata.xml +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ https://vendors.zanata.redhat.com/ ++ networkmanager ++ RHEL-7.5 ++ gettext ++ po ++ po ++ ++ +-- +2.14.3 + + +From 24d106994d46830bacaa4df8c7c7efe24d632b07 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Tue, 12 Dec 2017 10:42:05 +0100 +Subject: [PATCH 2/3] po: import translations + +https://bugzilla.redhat.com/show_bug.cgi?id=1481186 +--- + po/de.po | 1871 +++++++++++++++------------ + po/es.po | 1892 +++++++++++++++------------ + po/fr.po | 2054 +++++++++++++++-------------- + po/it.po | 1894 +++++++++++++++------------ + po/ja.po | 4126 ++++++++++++++++++++++++++++++++++------------------------- + po/ko.po | 1889 +++++++++++++++------------ + po/pt_BR.po | 1892 +++++++++++++++------------ + po/ru.po | 1889 +++++++++++++++------------ + po/zh_CN.po | 1891 +++++++++++++++------------ + po/zh_TW.po | 1878 +++++++++++++++------------ + 10 files changed, 11947 insertions(+), 9329 deletions(-) + +diff --git a/po/de.po b/po/de.po +index b198c2f..986b2fe 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -15,20 +15,21 @@ + # Christian Kirbach , 2009-2014. + # Benjamin Steinwender , 2014. + # Hedda Peters , 2014. ++# lrintel , 2017. #zanata + msgid "" + msgstr "" +-"Project-Id-Version: NetworkManager HEAD\n" ++"Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2017-11-10 15:29+0100\n" +-"PO-Revision-Date: 2017-09-14 00:26+0200\n" +-"Last-Translator: Christian Kirbach \n" ++"POT-Creation-Date: 2017-12-12 10:42+0100\n" ++"PO-Revision-Date: 2017-11-07 06:49+0000\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Deutsch \n" + "Language: de\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Poedit 1.8.7.1\n" ++"X-Generator: Zanata 4.3.2\n" + + #: ../clients/cli/agent.c:40 + #, c-format +@@ -197,7 +198,7 @@ msgstr "Verbindung(en) (Name, UUID oder Pfad)" + msgid "Connection(s) (name, UUID, path or apath)" + msgstr "Verbindung(en) (Name, UUID oder a-Pfad)" + +-#: ../clients/cli/connections.c:196 ++#: ../clients/cli/connections.c:197 + #, c-format + msgid "" + "Usage: nmcli connection { COMMAND | help }\n" +@@ -274,7 +275,7 @@ msgstr "" + " export [id | uuid | path] []\n" + "\n" + +-#: ../clients/cli/connections.c:218 ++#: ../clients/cli/connections.c:219 + #, c-format + msgid "" + "Usage: nmcli connection show { ARGUMENTS | help }\n" +@@ -325,7 +326,7 @@ msgstr "" + "Die globale Option »--show-secrets« zeigt zusätzlich zugehörige Passwörter " + "an.\n" + +-#: ../clients/cli/connections.c:239 ++#: ../clients/cli/connections.c:240 + #, c-format + msgid "" + "Usage: nmcli connection up { ARGUMENTS | help }\n" +@@ -372,7 +373,7 @@ msgstr "" + "passwd-file - Datei mit Passwörtern zum Aktivieren der Verbindung\n" + "\n" + +-#: ../clients/cli/connections.c:260 ++#: ../clients/cli/connections.c:261 + #, c-format + msgid "" + "Usage: nmcli connection down { ARGUMENTS | help }\n" +@@ -395,7 +396,7 @@ msgstr "" + "anhand dessen Name, UUID oder D-Bus-Pfad identifiziert.\n" + "\n" + +-#: ../clients/cli/connections.c:272 ++#: ../clients/cli/connections.c:273 + #, c-format + msgid "" + "Usage: nmcli connection add { ARGUMENTS | help }\n" +@@ -703,7 +704,7 @@ msgstr "" + " [ip6 ] [gw6 ]\n" + "\n" + +-#: ../clients/cli/connections.c:390 ++#: ../clients/cli/connections.c:391 + #, c-format + msgid "" + "Usage: nmcli connection modify { ARGUMENTS | help }\n" +@@ -752,7 +753,7 @@ msgstr "" + "nmcli con mod bond0 -bond.options downdelay\n" + "\n" + +-#: ../clients/cli/connections.c:413 ++#: ../clients/cli/connections.c:414 + #, c-format + msgid "" + "Usage: nmcli connection clone { ARGUMENTS | help }\n" +@@ -775,7 +776,7 @@ msgstr "" + "und der id (wird als Parameter angegeben).\n" + "\n" + +-#: ../clients/cli/connections.c:425 ++#: ../clients/cli/connections.c:426 + #, c-format + msgid "" + "Usage: nmcli connection edit { ARGUMENTS | help }\n" +@@ -803,7 +804,7 @@ msgstr "" + "Fügt ein neues Verbindungsprofil in einem interaktiven Editor hinzu.\n" + "\n" + +-#: ../clients/cli/connections.c:440 ++#: ../clients/cli/connections.c:441 + #, c-format + msgid "" + "Usage: nmcli connection delete { ARGUMENTS | help }\n" +@@ -822,7 +823,7 @@ msgstr "" + "Das Profil wird anhand dessen Name, UUID oder D-Bus-Pfad identifiziert.\n" + "\n" + +-#: ../clients/cli/connections.c:451 ++#: ../clients/cli/connections.c:452 + #, c-format + msgid "" + "Usage: nmcli connection monitor { ARGUMENTS | help }\n" +@@ -844,7 +845,7 @@ msgstr "" + "Es werden alle Verbindungsprofile überwacht, sofern keines angegeben wird.\n" + "\n" + +-#: ../clients/cli/connections.c:463 ++#: ../clients/cli/connections.c:464 + #, c-format + msgid "" + "Usage: nmcli connection reload { help }\n" +@@ -857,7 +858,7 @@ msgstr "" + "Lädt alle Verbindungsdateien neu von der Festplatte.\n" + "\n" + +-#: ../clients/cli/connections.c:471 ++#: ../clients/cli/connections.c:472 + #, c-format + msgid "" + "Usage: nmcli connection load { ARGUMENTS | help }\n" +@@ -880,7 +881,7 @@ msgstr "" + "um sicherzustellen, dass der NetworkManager die Änderungen übernimmt.\n" + "\n" + +-#: ../clients/cli/connections.c:483 ++#: ../clients/cli/connections.c:484 + #, c-format + msgid "" + "Usage: nmcli connection import { ARGUMENTS | help }\n" +@@ -906,7 +907,7 @@ msgstr "" + "\n" + "\n" + +-#: ../clients/cli/connections.c:496 ++#: ../clients/cli/connections.c:497 + #, c-format + msgid "" + "Usage: nmcli connection export { ARGUMENTS | help }\n" +@@ -927,23 +928,23 @@ msgstr "" + "sofern eine angegeben wird.\n" + "\n" + +-#: ../clients/cli/connections.c:530 ++#: ../clients/cli/connections.c:531 + msgid "activating" + msgstr "wird aktiviert" + +-#: ../clients/cli/connections.c:532 ++#: ../clients/cli/connections.c:533 + msgid "activated" + msgstr "aktiviert" + +-#: ../clients/cli/connections.c:534 ../clients/common/nm-client-utils.c:243 ++#: ../clients/cli/connections.c:535 ../clients/common/nm-client-utils.c:243 + msgid "deactivating" + msgstr "wird deaktiviert" + +-#: ../clients/cli/connections.c:536 ++#: ../clients/cli/connections.c:537 + msgid "deactivated" + msgstr "deaktiviert" + +-#: ../clients/cli/connections.c:539 ../clients/cli/connections.c:562 ++#: ../clients/cli/connections.c:540 ../clients/cli/connections.c:563 + #: ../clients/cli/devices.c:1210 ../clients/cli/devices.c:1254 + #: ../clients/cli/devices.c:1256 ../clients/cli/general.c:41 + #: ../clients/cli/general.c:79 ../clients/cli/general.c:146 +@@ -951,65 +952,65 @@ msgstr "deaktiviert" + #: ../clients/common/nm-client-utils.c:250 + #: ../clients/common/nm-client-utils.c:266 + #: ../clients/common/nm-client-utils.c:269 +-#: ../clients/common/nm-meta-setting-desc.c:1335 +-#: ../clients/common/nm-meta-setting-desc.c:1403 +-#: ../clients/common/nm-meta-setting-desc.c:2545 +-#: ../clients/common/nm-meta-setting-desc.c:2599 ++#: ../clients/common/nm-meta-setting-desc.c:1480 ++#: ../clients/common/nm-meta-setting-desc.c:1548 ++#: ../clients/common/nm-meta-setting-desc.c:2693 ++#: ../clients/common/nm-meta-setting-desc.c:2747 + msgid "unknown" + msgstr "unbekannt" + +-#: ../clients/cli/connections.c:548 ++#: ../clients/cli/connections.c:549 + msgid "VPN connecting (prepare)" + msgstr "VPN wird verbunden (wird vorbereitet)" + +-#: ../clients/cli/connections.c:550 ++#: ../clients/cli/connections.c:551 + msgid "VPN connecting (need authentication)" + msgstr "VPN wird verbunden (Legitimierung wird benötigt)" + +-#: ../clients/cli/connections.c:552 ++#: ../clients/cli/connections.c:553 + msgid "VPN connecting" + msgstr "VPN wird verbunden" + +-#: ../clients/cli/connections.c:554 ++#: ../clients/cli/connections.c:555 + msgid "VPN connecting (getting IP configuration)" + msgstr "VPN wird verbunden (IP-Einstellungen werden ermittelt)" + +-#: ../clients/cli/connections.c:556 ++#: ../clients/cli/connections.c:557 + msgid "VPN connected" + msgstr "VPN verbunden" + +-#: ../clients/cli/connections.c:558 ++#: ../clients/cli/connections.c:559 + msgid "VPN connection failed" + msgstr "VPN-Verbindung gescheitert" + +-#: ../clients/cli/connections.c:560 ++#: ../clients/cli/connections.c:561 + msgid "VPN disconnected" + msgstr "VPN getrennt" + +-#: ../clients/cli/connections.c:630 ++#: ../clients/cli/connections.c:631 + #, c-format + msgid "Error updating secrets for %s: %s\n" + msgstr "Fehler beim Aktualisieren der Geheimnisse für %s: %s\n" + +-#: ../clients/cli/connections.c:650 ++#: ../clients/cli/connections.c:651 + msgid "Connection profile details" + msgstr "Details des Verbindungsprofils" + +-#: ../clients/cli/connections.c:663 ../clients/cli/connections.c:1113 ++#: ../clients/cli/connections.c:664 ../clients/cli/connections.c:1114 + #, c-format + msgid "Error: 'connection show': %s" + msgstr "Fehler: »connection show«: %s" + +-#: ../clients/cli/connections.c:881 ++#: ../clients/cli/connections.c:882 + msgid "never" + msgstr "nie" + + #. "CAPABILITIES" +-#: ../clients/cli/connections.c:882 ../clients/cli/connections.c:884 +-#: ../clients/cli/connections.c:886 ../clients/cli/connections.c:919 +-#: ../clients/cli/connections.c:986 ../clients/cli/connections.c:987 +-#: ../clients/cli/connections.c:989 ../clients/cli/connections.c:4432 +-#: ../clients/cli/connections.c:6370 ../clients/cli/connections.c:6371 ++#: ../clients/cli/connections.c:883 ../clients/cli/connections.c:885 ++#: ../clients/cli/connections.c:887 ../clients/cli/connections.c:920 ++#: ../clients/cli/connections.c:987 ../clients/cli/connections.c:988 ++#: ../clients/cli/connections.c:990 ../clients/cli/connections.c:4433 ++#: ../clients/cli/connections.c:6371 ../clients/cli/connections.c:6372 + #: ../clients/cli/devices.c:884 ../clients/cli/devices.c:1173 + #: ../clients/cli/devices.c:1174 ../clients/cli/devices.c:1175 + #: ../clients/cli/devices.c:1176 ../clients/cli/devices.c:1177 +@@ -1020,16 +1021,16 @@ msgstr "nie" + #: ../clients/cli/devices.c:1252 ../clients/cli/devices.c:1253 + #: ../clients/cli/devices.c:1255 ../clients/cli/devices.c:1257 + #: ../clients/cli/general.c:152 ../clients/common/nm-client-utils.c:258 +-#: ../clients/common/nm-meta-setting-desc.c:575 +-#: ../clients/common/nm-meta-setting-desc.c:2538 ++#: ../clients/common/nm-meta-setting-desc.c:720 ++#: ../clients/common/nm-meta-setting-desc.c:2686 + msgid "yes" + msgstr "ja" + +-#: ../clients/cli/connections.c:882 ../clients/cli/connections.c:884 +-#: ../clients/cli/connections.c:886 ../clients/cli/connections.c:986 +-#: ../clients/cli/connections.c:987 ../clients/cli/connections.c:989 +-#: ../clients/cli/connections.c:4431 ../clients/cli/connections.c:6370 +-#: ../clients/cli/connections.c:6371 ../clients/cli/devices.c:884 ++#: ../clients/cli/connections.c:883 ../clients/cli/connections.c:885 ++#: ../clients/cli/connections.c:887 ../clients/cli/connections.c:987 ++#: ../clients/cli/connections.c:988 ../clients/cli/connections.c:990 ++#: ../clients/cli/connections.c:4432 ../clients/cli/connections.c:6371 ++#: ../clients/cli/connections.c:6372 ../clients/cli/devices.c:884 + #: ../clients/cli/devices.c:1173 ../clients/cli/devices.c:1174 + #: ../clients/cli/devices.c:1175 ../clients/cli/devices.c:1176 + #: ../clients/cli/devices.c:1177 ../clients/cli/devices.c:1214 +@@ -1040,65 +1041,65 @@ msgstr "ja" + #: ../clients/cli/devices.c:1253 ../clients/cli/devices.c:1255 + #: ../clients/cli/devices.c:1257 ../clients/cli/general.c:153 + #: ../clients/common/nm-client-utils.c:260 +-#: ../clients/common/nm-meta-setting-desc.c:575 +-#: ../clients/common/nm-meta-setting-desc.c:2541 ++#: ../clients/common/nm-meta-setting-desc.c:720 ++#: ../clients/common/nm-meta-setting-desc.c:2689 + msgid "no" + msgstr "nein" + +-#: ../clients/cli/connections.c:1103 ++#: ../clients/cli/connections.c:1104 + msgid "Activate connection details" + msgstr "Verbindungsdetails aktivieren" + +-#: ../clients/cli/connections.c:1350 ++#: ../clients/cli/connections.c:1351 + #, c-format + msgid "invalid field '%s'; allowed fields: %s and %s, or %s,%s" + msgstr "Ungültiges Feld »%s«; erlaubte Felder: %s und %s oder %s,%s" + +-#: ../clients/cli/connections.c:1365 ../clients/cli/connections.c:1373 ++#: ../clients/cli/connections.c:1366 ../clients/cli/connections.c:1374 + #, c-format + msgid "'%s' has to be alone" + msgstr "»%s« muss allein stehen" + +-#: ../clients/cli/connections.c:1573 ++#: ../clients/cli/connections.c:1574 + #, c-format + msgid "incorrect string '%s' of '--order' option" + msgstr "Falsche Zeichenkette »%s« der Option »--order«" + +-#: ../clients/cli/connections.c:1599 ++#: ../clients/cli/connections.c:1600 + #, c-format + msgid "incorrect item '%s' in '--order' option" + msgstr "Falsches Objekt »%s« der Option »--order«" + +-#: ../clients/cli/connections.c:1629 ++#: ../clients/cli/connections.c:1630 + msgid "No connection specified" + msgstr "Keine Verbindung angegeben" + +-#: ../clients/cli/connections.c:1644 ++#: ../clients/cli/connections.c:1645 + #, c-format + msgid "%s argument is missing" + msgstr "Argument %s fehlt" + +-#: ../clients/cli/connections.c:1654 ++#: ../clients/cli/connections.c:1655 + #, c-format + msgid "unknown connection '%s'" + msgstr "Unbekannte Verbindung »%s«" + +-#: ../clients/cli/connections.c:1687 ++#: ../clients/cli/connections.c:1688 + msgid "'--order' argument is missing" + msgstr "Argument »--order« fehlt" + +-#: ../clients/cli/connections.c:1742 ++#: ../clients/cli/connections.c:1743 + msgid "NetworkManager active profiles" + msgstr "NetworkManager aktive Profile" + +-#: ../clients/cli/connections.c:1743 ++#: ../clients/cli/connections.c:1744 + msgid "NetworkManager connection profiles" + msgstr "NetworkManager Verbindungsprofile" + +-#: ../clients/cli/connections.c:1796 ../clients/cli/connections.c:2471 +-#: ../clients/cli/connections.c:2483 ../clients/cli/connections.c:2495 +-#: ../clients/cli/connections.c:2671 ../clients/cli/connections.c:8431 +-#: ../clients/cli/connections.c:8448 ../clients/cli/devices.c:2681 ++#: ../clients/cli/connections.c:1797 ../clients/cli/connections.c:2472 ++#: ../clients/cli/connections.c:2484 ../clients/cli/connections.c:2496 ++#: ../clients/cli/connections.c:2672 ../clients/cli/connections.c:8434 ++#: ../clients/cli/connections.c:8451 ../clients/cli/devices.c:2681 + #: ../clients/cli/devices.c:2692 ../clients/cli/devices.c:2934 + #: ../clients/cli/devices.c:2945 ../clients/cli/devices.c:2963 + #: ../clients/cli/devices.c:2972 ../clients/cli/devices.c:2993 +@@ -1112,14 +1113,14 @@ msgstr "NetworkManager Verbindungsprofile" + msgid "Error: %s argument is missing." + msgstr "Fehler: Argument %s fehlt." + +-#: ../clients/cli/connections.c:1815 ++#: ../clients/cli/connections.c:1816 + #, c-format + msgid "Error: %s - no such connection profile." + msgstr "Fehler: Verbindungsprofil %s existiert nicht." + +-#: ../clients/cli/connections.c:1879 ../clients/cli/connections.c:2458 +-#: ../clients/cli/connections.c:2522 ../clients/cli/connections.c:7941 +-#: ../clients/cli/connections.c:8052 ../clients/cli/connections.c:8562 ++#: ../clients/cli/connections.c:1880 ../clients/cli/connections.c:2459 ++#: ../clients/cli/connections.c:2523 ../clients/cli/connections.c:7944 ++#: ../clients/cli/connections.c:8055 ../clients/cli/connections.c:8565 + #: ../clients/cli/devices.c:1582 ../clients/cli/devices.c:1868 + #: ../clients/cli/devices.c:2037 ../clients/cli/devices.c:2145 + #: ../clients/cli/devices.c:2334 ../clients/cli/devices.c:3590 +@@ -1128,239 +1129,239 @@ msgstr "Fehler: Verbindungsprofil %s existiert nicht." + msgid "Error: %s." + msgstr "Fehler: %s." + +-#: ../clients/cli/connections.c:1977 ++#: ../clients/cli/connections.c:1978 + #, c-format + msgid "no active connection on device '%s'" + msgstr "Keine aktive Verbindung auf Gerät »%s«" + +-#: ../clients/cli/connections.c:1985 ++#: ../clients/cli/connections.c:1986 + msgid "no active connection or device" + msgstr "Keine aktive Verbindung oder Gerät" + +-#: ../clients/cli/connections.c:2005 ++#: ../clients/cli/connections.c:2006 + #, c-format + msgid "device '%s' not compatible with connection '%s':" + msgstr "Gerät »%s« ist nicht mit der Verbindung »%s« kompatibel:" + +-#: ../clients/cli/connections.c:2041 ++#: ../clients/cli/connections.c:2042 + #, c-format + msgid "device '%s' not compatible with connection '%s'" + msgstr "Gerät »%s« ist nicht mit der Verbindung »%s« kompatibel" + +-#: ../clients/cli/connections.c:2044 ++#: ../clients/cli/connections.c:2045 + #, c-format + msgid "no device found for connection '%s'" + msgstr "Für die Verbindung »%s« wurde kein Gerät gefunden" + +-#: ../clients/cli/connections.c:2072 +-#, fuzzy, c-format ++#: ../clients/cli/connections.c:2073 ++#, c-format + msgid "Connection successfully activated (%s) (D-Bus active path: %s)\n" +-msgstr "Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: %s)\n" ++msgstr "" + +-#: ../clients/cli/connections.c:2076 ../clients/cli/connections.c:2224 +-#: ../clients/cli/connections.c:6249 ++#: ../clients/cli/connections.c:2077 ../clients/cli/connections.c:2225 ++#: ../clients/cli/connections.c:6250 + #, c-format + msgid "Connection successfully activated (D-Bus active path: %s)\n" + msgstr "Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: %s)\n" + +-#: ../clients/cli/connections.c:2083 ../clients/cli/connections.c:2204 ++#: ../clients/cli/connections.c:2084 ../clients/cli/connections.c:2205 + #, c-format + msgid "Error: Connection activation failed: %s" + msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: %s" + +-#: ../clients/cli/connections.c:2119 ++#: ../clients/cli/connections.c:2120 + #, c-format + msgid "Error: Timeout expired (%d seconds)" + msgstr "Fehler: Zeitbeschränkung (%d Sekunden) ist abgelaufen." + +-#: ../clients/cli/connections.c:2285 ++#: ../clients/cli/connections.c:2286 + #, c-format + msgid "failed to read passwd-file '%s': %s" + msgstr "Fehler: Lesen der passwd-Datei »%s« ist fehlgeschlagen: %s" + +-#: ../clients/cli/connections.c:2297 ++#: ../clients/cli/connections.c:2298 + #, c-format + msgid "missing colon in 'password' entry '%s'" + msgstr "Fehlender Doppelpunkt im Passwort-Eintrag »%s«" + +-#: ../clients/cli/connections.c:2305 ++#: ../clients/cli/connections.c:2306 + #, c-format + msgid "missing dot in 'password' entry '%s'" + msgstr "Fehlender Punkt im Passwort-Eintrag »%s«" + +-#: ../clients/cli/connections.c:2318 ++#: ../clients/cli/connections.c:2319 + #, c-format + msgid "invalid setting name in 'password' entry '%s'" + msgstr "Ungültiger Einstellungsname im Passwort-Eintrag »%s«" + +-#: ../clients/cli/connections.c:2374 ++#: ../clients/cli/connections.c:2375 + #, c-format + msgid "unknown device '%s'." + msgstr "Unbekanntes Gerät »%s«." + +-#: ../clients/cli/connections.c:2379 ++#: ../clients/cli/connections.c:2380 + msgid "neither a valid connection nor device given" + msgstr "weder eine gültige Verbindung noch ein Gerät angegeben" + +-#: ../clients/cli/connections.c:2505 ../clients/cli/devices.c:1533 ++#: ../clients/cli/connections.c:2506 ../clients/cli/devices.c:1533 + #: ../clients/cli/devices.c:2699 ../clients/cli/devices.c:3035 + #: ../clients/cli/devices.c:3644 + #, c-format + msgid "Unknown parameter: %s\n" + msgstr "Unbekannter Parameter: %s\n" + +-#: ../clients/cli/connections.c:2530 ++#: ../clients/cli/connections.c:2531 + msgid "preparing" + msgstr "Vorbereitung läuft" + +-#: ../clients/cli/connections.c:2550 ++#: ../clients/cli/connections.c:2551 + #, c-format + msgid "Connection '%s' (%s) successfully deleted.\n" + msgstr "Verbindung »%s« (%s) erfolgreich gelöscht.\n" + +-#: ../clients/cli/connections.c:2566 ++#: ../clients/cli/connections.c:2567 + #, c-format + msgid "Connection '%s' successfully deactivated (D-Bus active path: %s)\n" + msgstr "" + "Verbindung »%s« wurde erfolgreich deaktiviert (aktiver D-Bus-Pfad: %s)\n" + +-#: ../clients/cli/connections.c:2647 ../clients/cli/connections.c:8167 +-#: ../clients/cli/connections.c:8199 ../clients/cli/connections.c:8356 ++#: ../clients/cli/connections.c:2648 ../clients/cli/connections.c:8170 ++#: ../clients/cli/connections.c:8202 ../clients/cli/connections.c:8359 + #, c-format + msgid "Error: No connection specified." + msgstr "Fehler: Keine Verbindung angegeben." + +-#: ../clients/cli/connections.c:2688 ++#: ../clients/cli/connections.c:2689 + #, c-format + msgid "Error: '%s' is not an active connection.\n" + msgstr "Fehler: »%s« ist keine aktive Verbindung.\n" + +-#: ../clients/cli/connections.c:2689 ++#: ../clients/cli/connections.c:2690 + #, c-format + msgid "Error: not all active connections found." + msgstr "Fehler: Es wurden nicht alle aktiven Verbindungen gefunden." + +-#: ../clients/cli/connections.c:2698 ++#: ../clients/cli/connections.c:2699 + #, c-format + msgid "Error: no active connection provided." + msgstr "Fehler: Keine aktive Verbindung angegeben." + +-#: ../clients/cli/connections.c:2732 ++#: ../clients/cli/connections.c:2733 + #, c-format + msgid "Connection '%s' deactivation failed: %s\n" + msgstr "Deaktivierung der Verbindung »%s« ist gescheitert: %s\n" + +-#: ../clients/cli/connections.c:2988 ../clients/cli/connections.c:3045 ++#: ../clients/cli/connections.c:2989 ../clients/cli/connections.c:3046 + #: ../clients/common/nm-client-utils.c:169 + #, c-format + msgid "'%s' not among [%s]" + msgstr "»%s« ist nicht unter [%s]" + + #. We should not really come here +-#: ../clients/cli/connections.c:3008 ../clients/cli/connections.c:3068 ++#: ../clients/cli/connections.c:3009 ../clients/cli/connections.c:3069 + #: ../clients/common/nm-client-utils.c:279 + #, c-format + msgid "Unknown error" + msgstr "Unbekannter Fehler" + +-#: ../clients/cli/connections.c:3202 ++#: ../clients/cli/connections.c:3203 + #, c-format + msgid "Warning: master='%s' doesn't refer to any existing profile.\n" + msgstr "Warnung: master=»%s« bezieht sich auf kein vorhandenes Profil.\n" + +-#: ../clients/cli/connections.c:3539 ++#: ../clients/cli/connections.c:3540 + #, c-format + msgid "Error: invalid property '%s': %s." + msgstr "Fehler: Ungültige Eigenschaft »%s«: %s." + +-#: ../clients/cli/connections.c:3556 ++#: ../clients/cli/connections.c:3557 + #, c-format + msgid "Error: failed to modify %s.%s: %s." + msgstr "Fehler: Ändern ist fehlgeschlagen %s.%s: %s." + +-#: ../clients/cli/connections.c:3575 ++#: ../clients/cli/connections.c:3576 + #, c-format + msgid "Error: failed to remove a value from %s.%s: %s." + msgstr "Fehler: Entfernen eines Wertes von %s.%s: %s ist fehlgeschlagen." + +-#: ../clients/cli/connections.c:3609 ++#: ../clients/cli/connections.c:3610 + #, c-format + msgid "Error: '%s' is mandatory." + msgstr "Fehler: »%s« ist zwingend erforderlich." + +-#: ../clients/cli/connections.c:3636 ++#: ../clients/cli/connections.c:3637 + #, c-format + msgid "Error: invalid slave type; %s." + msgstr "Fehler: Unzulässiger Slave-Typ; %s." + +-#: ../clients/cli/connections.c:3644 ++#: ../clients/cli/connections.c:3645 + #, c-format + msgid "Error: invalid connection type; %s." + msgstr "Fehler: Unbekannter Verbindungstyp: %s." + +-#: ../clients/cli/connections.c:3721 ++#: ../clients/cli/connections.c:3722 + #, c-format + msgid "Error: bad connection type: %s" + msgstr "Fehler: Falscher Verbindungstyp: %s" + +-#: ../clients/cli/connections.c:3767 ++#: ../clients/cli/connections.c:3768 + #, c-format + msgid "Error: '%s': %s" + msgstr "Fehler: »%s«: %s" + +-#: ../clients/cli/connections.c:3788 ++#: ../clients/cli/connections.c:3789 + msgid "Error: master is required" + msgstr "Fehler: »master« ist notwendig" + +-#: ../clients/cli/connections.c:3847 ++#: ../clients/cli/connections.c:3848 + #, c-format + msgid "Error: error adding bond option '%s=%s'." + msgstr "Fehler: Fehler beim Hinzufügen der bond-Option »%s=%s«." + +-#: ../clients/cli/connections.c:3878 ++#: ../clients/cli/connections.c:3879 + #, c-format + msgid "Error: '%s' is not a valid monitoring mode; use '%s' or '%s'.\n" + msgstr "" + "Fehler: »%s« ist kein gültiger Überwachungsmodus; verwenden Sie »%s« oder " + "»%s«.\n" + +-#: ../clients/cli/connections.c:3909 ++#: ../clients/cli/connections.c:3910 + #, c-format + msgid "Error: 'bt-type': '%s' not valid; use [%s, %s, %s (%s), %s]." + msgstr "" + "Fehler: »bt-type«: »%s« ist nicht gültig. Verwenden Sie [%s, %s, %s (%s), " + "%s]." + +-#: ../clients/cli/connections.c:4158 ++#: ../clients/cli/connections.c:4159 + #, c-format + msgid "Error: value for '%s' is missing." + msgstr "Fehler: Wert für »%s« fehlt." + +-#: ../clients/cli/connections.c:4204 ++#: ../clients/cli/connections.c:4205 + msgid "Error: . argument is missing." + msgstr "Fehler: Argument für Einstellung fehlt." + +-#: ../clients/cli/connections.c:4227 ++#: ../clients/cli/connections.c:4228 + #, c-format + msgid "Error: invalid or not allowed setting '%s': %s." + msgstr "Fehler: Ungültige oder nicht zulässige Einstellung »%s«: %s." + +-#: ../clients/cli/connections.c:4273 ../clients/cli/connections.c:4289 ++#: ../clients/cli/connections.c:4274 ../clients/cli/connections.c:4290 + #, c-format + msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)." + msgstr "Fehler: '%s' ist mehrdeutig (%s.%s oder %s.%s)." + +-#: ../clients/cli/connections.c:4307 ++#: ../clients/cli/connections.c:4308 + #, c-format + msgid "Error: invalid . '%s'." + msgstr "Fehler: Ungültiger Einstellungsname: »%s«." + +-#: ../clients/cli/connections.c:4351 ../clients/cli/connections.c:7992 ++#: ../clients/cli/connections.c:4352 ../clients/cli/connections.c:7995 + #, c-format + msgid "Error: Failed to add '%s' connection: %s" + msgstr "Fehler: Verbindung »%s« konnte nicht hinzugefügt werden: %s" + +-#: ../clients/cli/connections.c:4369 ++#: ../clients/cli/connections.c:4370 + #, c-format + msgid "" + "Warning: There is another connection with the name '%1$s'. Reference the " +@@ -1371,12 +1372,12 @@ msgid_plural "" + msgstr[0] "" + msgstr[1] "" + +-#: ../clients/cli/connections.c:4378 ++#: ../clients/cli/connections.c:4379 + #, c-format + msgid "Connection '%s' (%s) successfully added.\n" + msgstr "Verbindung »%s« (%s) erfolgreich hinzugefügt.\n" + +-#: ../clients/cli/connections.c:4516 ++#: ../clients/cli/connections.c:4517 + #, c-format + msgid "" + "You can specify this option more than once. Press when you're done.\n" +@@ -1385,36 +1386,36 @@ msgstr "" + "fertig sind.\n" + + #. Ask for optional arguments. +-#: ../clients/cli/connections.c:4615 ++#: ../clients/cli/connections.c:4616 + #, c-format + msgid "There is %d optional setting for %s.\n" + msgid_plural "There are %d optional settings for %s.\n" + msgstr[0] "Es gibt %d optionale Einstellung für »%s«.\n" + msgstr[1] "Es gibt %d optionale Einstellungen für »%s«.\n" + +-#: ../clients/cli/connections.c:4618 ++#: ../clients/cli/connections.c:4619 + #, c-format + msgid "Do you want to provide it? %s" + msgid_plural "Do you want to provide them? %s" + msgstr[0] "Möchten Sie es zur Verfügung stellen? »%s«" + msgstr[1] "Möchten Sie diese zur Verfügung stellen? »%s«" + +-#: ../clients/cli/connections.c:4754 ../clients/cli/utils.c:303 ++#: ../clients/cli/connections.c:4755 ../clients/cli/utils.c:303 + #, c-format + msgid "Error: value for '%s' argument is required." + msgstr "Fehler: Ein Wert ist für den Parameter »%s« notwendig." + +-#: ../clients/cli/connections.c:4760 ++#: ../clients/cli/connections.c:4761 + #, c-format + msgid "Error: 'save': %s." + msgstr "Fehler: »save«: %s." + +-#: ../clients/cli/connections.c:4848 ../clients/cli/connections.c:4859 ++#: ../clients/cli/connections.c:4849 ../clients/cli/connections.c:4860 + #, c-format + msgid "Error: '%s' argument is required." + msgstr "Fehler: Das Argument »%s« ist notwendig." + +-#: ../clients/cli/connections.c:5837 ++#: ../clients/cli/connections.c:5838 + #, c-format + msgid "['%s' setting values]\n" + msgstr "['%s' Werte werden gesetzt]\n" +@@ -1423,7 +1424,7 @@ msgstr "['%s' Werte werden gesetzt]\n" + #. TRANSLATORS: do not translate command names and keywords before :: + #. * However, you should translate terms enclosed in <>. + #. +-#: ../clients/cli/connections.c:5916 ++#: ../clients/cli/connections.c:5917 + #, c-format + msgid "" + "---[ Main menu ]---\n" +@@ -1459,7 +1460,7 @@ msgstr "" + "nmcli :: nmcli-Konfiguration\n" + "quit :: nmcli beenden\n" + +-#: ../clients/cli/connections.c:5943 ++#: ../clients/cli/connections.c:5944 + #, c-format + msgid "" + "goto [.] | :: enter setting/property for editing\n" +@@ -1479,7 +1480,7 @@ msgstr "" + " nmcli connection> goto secondaries\n" + " nmcli> goto ipv4.addresses\n" + +-#: ../clients/cli/connections.c:5950 ++#: ../clients/cli/connections.c:5951 + #, c-format + msgid "" + "remove [.] :: remove setting or reset property value\n" +@@ -1501,7 +1502,7 @@ msgstr "" + "Beispiele: nmcli> remove wifi-sec\n" + " nmcli> remove eth.mtu\n" + +-#: ../clients/cli/connections.c:5957 ++#: ../clients/cli/connections.c:5958 + #, c-format + msgid "" + "set [. ] :: set property value\n" +@@ -1516,7 +1517,7 @@ msgstr "" + "\n" + "Beispiel: nmcli> s con.id Meine Verbindung\n" + +-#: ../clients/cli/connections.c:5962 ++#: ../clients/cli/connections.c:5963 + #, c-format + msgid "" + "describe [.] :: describe property\n" +@@ -1529,7 +1530,7 @@ msgstr "" + "Zeigt die Eigenschaftsbeschreibung. Sie können die Hilfeseite nm-settings(5) " + "zu Rate ziehen, um alle Einstellungen und Eigenschaften nachzulesen.\n" + +-#: ../clients/cli/connections.c:5967 ++#: ../clients/cli/connections.c:5968 + #, c-format + msgid "" + "print [all] :: print setting or connection values\n" +@@ -1544,7 +1545,7 @@ msgstr "" + "\n" + "Beispiel: nmcli ipv4> print all\n" + +-#: ../clients/cli/connections.c:5972 ++#: ../clients/cli/connections.c:5973 + #, c-format + msgid "" + "verify [all | fix] :: verify setting or connection validity\n" +@@ -1570,7 +1571,7 @@ msgstr "" + " nmcli> verify fix\n" + " nmcli bond> verify\n" + +-#: ../clients/cli/connections.c:5981 ++#: ../clients/cli/connections.c:5982 + #, c-format + msgid "" + "save [persistent|temporary] :: save the connection\n" +@@ -1597,7 +1598,7 @@ msgstr "" + "Verbindung volständig löschen möchten, so muss das Verbindungsprofil\n" + "gelöscht werden.\n" + +-#: ../clients/cli/connections.c:5992 ++#: ../clients/cli/connections.c:5993 + #, c-format + msgid "" + "activate [] [/|] :: activate the connection\n" +@@ -1619,7 +1620,7 @@ msgstr "" + "/| - Zugriffspunkt (WLAN) oder NSP (WiMAX) (stellen Sie " + "»/« voraus wenn nicht angegeben wird)\n" + +-#: ../clients/cli/connections.c:5999 ../clients/cli/connections.c:6158 ++#: ../clients/cli/connections.c:6000 ../clients/cli/connections.c:6159 + #, c-format + msgid "" + "back :: go to upper menu level\n" +@@ -1628,7 +1629,7 @@ msgstr "" + "back :: Eine Menüebene nach oben gehen\n" + "\n" + +-#: ../clients/cli/connections.c:6002 ++#: ../clients/cli/connections.c:6003 + #, c-format + msgid "" + "help/? [] :: help for the nmcli commands\n" +@@ -1637,7 +1638,7 @@ msgstr "" + "help/? [] :: Hilfe zu den nmcli-Befehlen\n" + "\n" + +-#: ../clients/cli/connections.c:6005 ++#: ../clients/cli/connections.c:6006 + #, c-format + msgid "" + "nmcli [ ] :: nmcli configuration\n" +@@ -1664,7 +1665,7 @@ msgstr "" + " nmcli> nmcli save-confirmation no\n" + " nmcli> nmcli prompt-color 3\n" + +-#: ../clients/cli/connections.c:6027 ../clients/cli/connections.c:6164 ++#: ../clients/cli/connections.c:6028 ../clients/cli/connections.c:6165 + #, c-format + msgid "" + "quit :: exit nmcli\n" +@@ -1677,8 +1678,8 @@ msgstr "" + "Dieser Befehl beendet nmcli. Wenn die Verbindung in Bearbeitung nicht " + "gespeichert ist wird der Benutzer gefragt, die Aktion zu bestätigen.\n" + +-#: ../clients/cli/connections.c:6032 ../clients/cli/connections.c:6169 +-#: ../clients/cli/connections.c:6605 ../clients/cli/connections.c:7562 ++#: ../clients/cli/connections.c:6033 ../clients/cli/connections.c:6170 ++#: ../clients/cli/connections.c:6606 ../clients/cli/connections.c:7563 + #, c-format + msgid "Unknown command: '%s'\n" + msgstr "Unbekannter Befehl: »%s«\n" +@@ -1686,7 +1687,7 @@ msgstr "Unbekannter Befehl: »%s«\n" + #. TRANSLATORS: do not translate command names and keywords before :: + #. * However, you should translate terms enclosed in <>. + #. +-#: ../clients/cli/connections.c:6098 ++#: ../clients/cli/connections.c:6099 + #, c-format + msgid "" + "---[ Property menu ]---\n" +@@ -1715,7 +1716,7 @@ msgstr "" + "ausgeben\n" + "quit :: nmcli beenden\n" + +-#: ../clients/cli/connections.c:6123 ++#: ../clients/cli/connections.c:6124 + #, c-format + msgid "" + "set [] :: set new value\n" +@@ -1726,7 +1727,7 @@ msgstr "" + "\n" + "Dieser Befehl setzt den für die Eigenschaft\n" + +-#: ../clients/cli/connections.c:6127 ++#: ../clients/cli/connections.c:6128 + #, c-format + msgid "" + "add [] :: append new value to the property\n" +@@ -1741,7 +1742,7 @@ msgstr "" + "die Eigenschaft ein Container-Typ ist. Für einwertige Eigenschaften wird der " + "Wert ersetzt (genau wie »set«).\n" + +-#: ../clients/cli/connections.c:6133 ++#: ../clients/cli/connections.c:6134 + #, c-format + msgid "" + "change :: change current value\n" +@@ -1752,7 +1753,7 @@ msgstr "" + "\n" + "Zeigt den aktuellen Wert an und lässt ihn bearbeiten.\n" + +-#: ../clients/cli/connections.c:6137 ++#: ../clients/cli/connections.c:6138 + #, c-format + msgid "" + "remove [|| - -+ -+ slaves-order -+ -+ -+ This key specifies in which order slave connections are -+ auto-activated on boot or when the master activates -+ them. Allowed values are name (order -+ connection by interface name, the default), or -+ index (order slaves by their kernel -+ index). -+ -+ -+ - - - -diff --git a/src/nm-config.h b/src/nm-config.h -index 283d6a1..ae695fc 100644 ---- a/src/nm-config.h -+++ b/src/nm-config.h -@@ -63,6 +63,7 @@ - #define NM_CONFIG_KEYFILE_KEY_MAIN_DHCP "dhcp" - #define NM_CONFIG_KEYFILE_KEY_MAIN_DEBUG "debug" - #define NM_CONFIG_KEYFILE_KEY_MAIN_HOSTNAME_MODE "hostname-mode" -+#define NM_CONFIG_KEYFILE_KEY_MAIN_SLAVES_ORDER "slaves-order" - #define NM_CONFIG_KEYFILE_KEY_LOGGING_BACKEND "backend" - #define NM_CONFIG_KEYFILE_KEY_CONFIG_ENABLE "enable" - #define NM_CONFIG_KEYFILE_KEY_ATOMIC_SECTION_WAS ".was" -diff --git a/src/nm-manager.c b/src/nm-manager.c -index a740219..3d94ce9 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -2459,10 +2459,14 @@ platform_query_devices (NMManager *self) - NMPlatformLink *links; - int i; - gboolean guess_assume; -+ const char *order; - - guess_assume = nm_config_get_first_start (nm_config_get ()); -- -- links_array = nm_platform_link_get_all (NM_PLATFORM_GET); -+ order = nm_config_data_get_value_cached (NM_CONFIG_GET_DATA, -+ NM_CONFIG_KEYFILE_GROUP_MAIN, -+ NM_CONFIG_KEYFILE_KEY_MAIN_SLAVES_ORDER, -+ NM_CONFIG_GET_VALUE_STRIP); -+ links_array = nm_platform_link_get_all (NM_PLATFORM_GET, !nm_streq0 (order, "index")); - links = (NMPlatformLink *) links_array->data; - for (i = 0; i < links_array->len; i++) { - gs_free NMConfigDeviceStateData *dev_state = NULL; -@@ -3016,7 +3020,7 @@ out: - } - - static gint --compare_slaves (gconstpointer a, gconstpointer b, gpointer _unused) -+compare_slaves (gconstpointer a, gconstpointer b, gpointer sort_by_name) - { - const SlaveConnectionInfo *a_info = a; - const SlaveConnectionInfo *b_info = b; -@@ -3027,8 +3031,12 @@ compare_slaves (gconstpointer a, gconstpointer b, gpointer _unused) - if (!b_info->device) - return -1; - -- return g_strcmp0 (nm_device_get_iface (a_info->device), -- nm_device_get_iface (b_info->device)); -+ if (GPOINTER_TO_INT (sort_by_name)) { -+ return g_strcmp0 (nm_device_get_iface (a_info->device), -+ nm_device_get_iface (b_info->device)); -+ } -+ -+ return nm_device_get_ifindex (a_info->device) - nm_device_get_ifindex (b_info->device); - } - - static void -@@ -3042,11 +3050,17 @@ autoconnect_slaves (NMManager *self, - if (should_connect_slaves (NM_CONNECTION (master_connection), master_device)) { - gs_free SlaveConnectionInfo *slaves = NULL; - guint i, n_slaves = 0; -+ const char *value; - - slaves = find_slaves (self, master_connection, master_device, &n_slaves); - if (n_slaves > 1) { -+ value = nm_config_data_get_value_cached (NM_CONFIG_GET_DATA, -+ NM_CONFIG_KEYFILE_GROUP_MAIN, -+ NM_CONFIG_KEYFILE_KEY_MAIN_SLAVES_ORDER, -+ NM_CONFIG_GET_VALUE_STRIP); - g_qsort_with_data (slaves, n_slaves, sizeof (slaves[0]), -- compare_slaves, NULL); -+ compare_slaves, -+ GINT_TO_POINTER (!nm_streq0 (value, "index"))); - } - - for (i = 0; i < n_slaves; i++) { -diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c -index 767187d..a244ff3 100644 ---- a/src/platform/nm-platform.c -+++ b/src/platform/nm-platform.c -@@ -437,7 +437,8 @@ nm_platform_sysctl_get_int_checked (NMPlatform *self, const char *pathid, int di - - static int - _link_get_all_presort (gconstpointer p_a, -- gconstpointer p_b) -+ gconstpointer p_b, -+ gpointer sort_by_name) - { - const NMPlatformLink *a = p_a; - const NMPlatformLink *b = p_b; -@@ -448,13 +449,16 @@ _link_get_all_presort (gconstpointer p_a, - if (b->ifindex == 1) - return 1; - -- /* Initialized links first */ -- if (a->initialized > b->initialized) -- return -1; -- if (a->initialized < b->initialized) -- return 1; -+ if (GPOINTER_TO_INT (sort_by_name)) { -+ /* Initialized links first */ -+ if (a->initialized > b->initialized) -+ return -1; -+ if (a->initialized < b->initialized) -+ return 1; - -- return strcmp (a->name, b->name); -+ return strcmp (a->name, b->name); -+ } else -+ return a->ifindex - b->ifindex; - } - - /** -@@ -465,7 +469,7 @@ _link_get_all_presort (gconstpointer p_a, - * owned by the caller and should be freed with g_array_unref(). - */ - GArray * --nm_platform_link_get_all (NMPlatform *self) -+nm_platform_link_get_all (NMPlatform *self, gboolean sort_by_name) - { - GArray *links, *result; - guint i, j, nresult; -@@ -479,9 +483,9 @@ nm_platform_link_get_all (NMPlatform *self) - if (!links || links->len == 0) - return links; - -- /* first sort the links by their ifindex. Below we will sort further by moving -- * children/slaves to the end. */ -- g_array_sort (links, _link_get_all_presort); -+ /* first sort the links by their ifindex or name. Below we will sort -+ * further by moving children/slaves to the end. */ -+ g_array_sort_with_data (links, _link_get_all_presort, GINT_TO_POINTER (sort_by_name)); - - unseen = g_hash_table_new (g_direct_hash, g_direct_equal); - for (i = 0; i < links->len; i++) { -diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h -index 43be17f..1b8fa13 100644 ---- a/src/platform/nm-platform.h -+++ b/src/platform/nm-platform.h -@@ -763,7 +763,7 @@ const NMPlatformLink *nm_platform_link_get (NMPlatform *self, int ifindex); - const NMPlatformLink *nm_platform_link_get_by_ifname (NMPlatform *self, const char *ifname); - const NMPlatformLink *nm_platform_link_get_by_address (NMPlatform *self, gconstpointer address, size_t length); - --GArray *nm_platform_link_get_all (NMPlatform *self); -+GArray *nm_platform_link_get_all (NMPlatform *self, gboolean sort_by_name); - NMPlatformError nm_platform_link_dummy_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link); - NMPlatformError nm_platform_link_bridge_add (NMPlatform *self, const char *name, const void *address, size_t address_len, const NMPlatformLink **out_link); - NMPlatformError nm_platform_link_bond_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link); -diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c -index 04db862..a9d0694 100644 ---- a/src/platform/tests/test-common.c -+++ b/src/platform/tests/test-common.c -@@ -185,7 +185,7 @@ link_callback (NMPlatform *platform, int obj_type_i, int ifindex, NMPlatformLink - - /* Check the data */ - g_assert (received->ifindex > 0); -- links = nm_platform_link_get_all (NM_PLATFORM_GET); -+ links = nm_platform_link_get_all (NM_PLATFORM_GET, TRUE); - for (i = 0; i < links->len; i++) { - cached = &g_array_index (links, NMPlatformLink, i); - if (cached->ifindex == received->ifindex) { -diff --git a/src/platform/tests/test-general.c b/src/platform/tests/test-general.c -index 2ccfac7..e772662 100644 ---- a/src/platform/tests/test-general.c -+++ b/src/platform/tests/test-general.c -@@ -48,7 +48,7 @@ test_link_get_all (void) - - platform = nm_linux_platform_new (TRUE, NM_PLATFORM_NETNS_SUPPORT_DEFAULT); - -- links = nm_platform_link_get_all (platform); -+ links = nm_platform_link_get_all (platform, TRUE); - } - - /*****************************************************************************/ --- -2.9.3 - diff --git a/SOURCES/0012-device-increase-carrier-wait-time-rh1520826.patch b/SOURCES/0012-device-increase-carrier-wait-time-rh1520826.patch new file mode 100644 index 0000000..ee2ebb7 --- /dev/null +++ b/SOURCES/0012-device-increase-carrier-wait-time-rh1520826.patch @@ -0,0 +1,31 @@ +From 511649ebb6941679d0ade0ff401ba7669f620619 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Fri, 5 Jan 2018 16:55:55 +0100 +Subject: [PATCH] device: increase carrier wait time to 6 seconds + +Some NICs need longer to establish the link, increase the timeout from +5 to 6 seconds. + +https://bugzilla.redhat.com/show_bug.cgi?id=1520826 +(cherry picked from commit 156344b8beec88b68f335fe13c5db91d62fcb3fc) +(cherry picked from commit 3c60d6354044e3d88b010d489c0e76f8dd1163c9) +--- + src/devices/nm-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index 40c425a5b..babef21ad 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -87,7 +87,7 @@ _LOG_DECLARE_SELF (NMDevice); + #define DHCP_NUM_TRIES_MAX 3 + #define DEFAULT_AUTOCONNECT TRUE + +-#define CARRIER_WAIT_TIME_MS 5000 ++#define CARRIER_WAIT_TIME_MS 6000 + #define CARRIER_WAIT_TIME_AFTER_MTU_MS 10000 + + #define NM_DEVICE_AUTH_RETRIES_UNSET -1 +-- +2.14.3 + diff --git a/SOURCES/0013-ifcfg-ovs-master-rh1519179.patch b/SOURCES/0013-ifcfg-ovs-master-rh1519179.patch new file mode 100644 index 0000000..bc8e75b --- /dev/null +++ b/SOURCES/0013-ifcfg-ovs-master-rh1519179.patch @@ -0,0 +1,60 @@ +From c778d9a252debf4cee02df51400a3b33e5afa304 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Thu, 18 Jan 2018 10:13:43 +0100 +Subject: [PATCH] ifcfg: don't forget master of ovs interfaces + +https://bugzilla.redhat.com/show_bug.cgi?id=1519179 +(cherry picked from commit 1440fe6a8804c0d2da162ebc91d35a55c5e83f42) +--- + src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c | 17 +++++++++++++++++ + src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 6 ++++++ + 2 files changed, 23 insertions(+) + +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 b9900eec3..bdd3ee0a1 100644 +--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c ++++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c +@@ -293,6 +293,23 @@ make_connection_setting (const char *file, + check_if_bond_slave (ifcfg, s_con); + check_if_team_slave (ifcfg, s_con); + ++ nm_clear_g_free (&value); ++ v = svGetValueStr (ifcfg, "OVS_PORT_UUID", &value); ++ if (!v) ++ v = svGetValueStr (ifcfg, "OVS_PORT", &value); ++ if (v) { ++ const char *old_value; ++ ++ if ((old_value = nm_setting_connection_get_master (s_con))) { ++ PARSE_WARNING ("Already configured as slave of %s. Ignoring OVS_PORT=\"%s\"", ++ old_value, v); ++ } else { ++ g_object_set (s_con, NM_SETTING_CONNECTION_MASTER, v, NULL); ++ g_object_set (s_con, NM_SETTING_CONNECTION_SLAVE_TYPE, ++ NM_SETTING_OVS_PORT_SETTING_NAME, NULL); ++ } ++ } ++ + nm_clear_g_free (&value); + v = svGetValueStr (ifcfg, "GATEWAY_PING_TIMEOUT", &value); + if (v) { +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 5cb8ee98f..e9dd08b7d 100644 +--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c ++++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c +@@ -1832,6 +1832,12 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg) + NM_SETTING_WIRED_SETTING_NAME, + NM_SETTING_VLAN_SETTING_NAME)) + svUnsetValue (ifcfg, "TYPE"); ++ } else if (nm_setting_connection_is_slave_type (s_con, NM_SETTING_OVS_PORT_SETTING_NAME)) { ++ svSetValueStr (ifcfg, "OVS_PORT_UUID", master); ++ svSetValueStr (ifcfg, "OVS_PORT", master_iface); ++ } else { ++ _LOGW ("don't know how to set master for a %s slave", ++ nm_setting_connection_get_slave_type (s_con)); + } + } + +-- +2.14.3 + diff --git a/SOURCES/0013-nmcli-fix-8021x-password-raw-rh1456362.patch b/SOURCES/0013-nmcli-fix-8021x-password-raw-rh1456362.patch deleted file mode 100644 index 7406d16..0000000 --- a/SOURCES/0013-nmcli-fix-8021x-password-raw-rh1456362.patch +++ /dev/null @@ -1,121 +0,0 @@ -From c10c09d54b7e38dae1c73be0c5b3c7e01ac57315 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Tue, 23 May 2017 15:56:27 +0200 -Subject: [PATCH 1/2] clients: fix setter for 802-1x.password-raw - -The property is a GBytes, not a GByteArray. - -https://bugzilla.gnome.org/show_bug.cgi?id=782836 -(cherry picked from commit 30393ee2360e8678188cc47d794f2199d50e82ba) -(cherry picked from commit cc6c9468fc01d69505141ee8956766079dbed903) ---- - clients/cli/settings.c | 23 ++++++++++++----------- - 1 file changed, 12 insertions(+), 11 deletions(-) - -diff --git a/clients/cli/settings.c b/clients/cli/settings.c -index 87b1f50..3bcd09c 100644 ---- a/clients/cli/settings.c -+++ b/clients/cli/settings.c -@@ -1643,11 +1643,12 @@ nmc_util_is_domain (const char *domain) - } - - static gboolean --nmc_property_set_byte_array (NMSetting *setting, const char *prop, const char *val, GError **error) -+nmc_property_set_bytes (NMSetting *setting, const char *prop, const char *val, GError **error) - { -- char **strv = NULL, **iter; -- char *val_strip; -+ gs_free char *val_strip = NULL; -+ gs_strfreev char **strv = NULL; - const char *delimiters = " \t,"; -+ char **iter; - long int val_int; - GBytes *bytes; - GByteArray *array = NULL; -@@ -1659,10 +1660,8 @@ nmc_property_set_byte_array (NMSetting *setting, const char *prop, const char *v - - /* First try hex string in the format of AAbbCCDd */ - bytes = nm_utils_hexstr2bin (val_strip); -- if (bytes) { -- array = g_bytes_unref_to_array (bytes); -+ if (bytes) - goto done; -- } - - /* Otherwise, consider the following format: AA b 0xCc D */ - strv = nmc_strsplit_set (val_strip, delimiters, 0); -@@ -1670,19 +1669,21 @@ nmc_property_set_byte_array (NMSetting *setting, const char *prop, const char *v - for (iter = strv; iter && *iter; iter++) { - if (!nmc_string_to_int_base (g_strstrip (*iter), 16, TRUE, 0, 255, &val_int)) { - g_set_error (error, 1, 0, _("'%s' is not a valid hex character"), *iter); -+ g_byte_array_free (array, TRUE); - success = FALSE; - goto done; - } - g_byte_array_append (array, (const guint8 *) &val_int, 1); - } -+ bytes = g_byte_array_free_to_bytes (array); - - done: - if (success) -- g_object_set (setting, prop, array, NULL); -+ g_object_set (setting, prop, bytes, NULL); -+ -+ if (bytes) -+ g_bytes_unref (bytes); - -- g_strfreev (strv); -- if (array) -- g_byte_array_free (array, TRUE); - return success; - } - -@@ -2186,7 +2187,7 @@ DEFINE_ALLOWED_VAL_FUNC (nmc_property_802_1X_allowed_phase2_autheap, _802_1X_val - static gboolean - nmc_property_802_1X_set_password_raw (NMSetting *setting, const char *prop, const char *val, GError **error) - { -- return nmc_property_set_byte_array (setting, prop, val, error); -+ return nmc_property_set_bytes (setting, prop, val, error); - } - - static const char * --- -2.9.3 - -From 3ad0b8645e890523da23f550dc6db75c40da2718 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Tue, 23 May 2017 16:01:54 +0200 -Subject: [PATCH 2/2] clients: fix appending integer to result in - nmc_property_set_bytes() - -(cherry picked from commit d76c190dc72df042733cca13849e18bcc13eed65) -(cherry picked from commit 06d3c95e4fc70561b12be80e5982487443d914ec) ---- - clients/cli/settings.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/clients/cli/settings.c b/clients/cli/settings.c -index 3bcd09c..e0f045a 100644 ---- a/clients/cli/settings.c -+++ b/clients/cli/settings.c -@@ -1667,13 +1667,16 @@ nmc_property_set_bytes (NMSetting *setting, const char *prop, const char *val, G - strv = nmc_strsplit_set (val_strip, delimiters, 0); - array = g_byte_array_sized_new (g_strv_length (strv)); - for (iter = strv; iter && *iter; iter++) { -+ guint8 v8; -+ - if (!nmc_string_to_int_base (g_strstrip (*iter), 16, TRUE, 0, 255, &val_int)) { - g_set_error (error, 1, 0, _("'%s' is not a valid hex character"), *iter); - g_byte_array_free (array, TRUE); - success = FALSE; - goto done; - } -- g_byte_array_append (array, (const guint8 *) &val_int, 1); -+ v8 = val_int; -+ g_byte_array_append (array, &v8, 1); - } - bytes = g_byte_array_free_to_bytes (array); - --- -2.9.3 - diff --git a/SOURCES/0014-device-skip-IP-conf-for-external-devices-rh1530288.patch b/SOURCES/0014-device-skip-IP-conf-for-external-devices-rh1530288.patch new file mode 100644 index 0000000..7013e03 --- /dev/null +++ b/SOURCES/0014-device-skip-IP-conf-for-external-devices-rh1530288.patch @@ -0,0 +1,52 @@ +From d07570b2dad62b582f39310f4abea036060f85a0 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Thu, 18 Jan 2018 11:43:09 +0100 +Subject: [PATCH] device: skip IP configuration phase for external devices + +We already avoid committing the IP configuration for external devices +(see commit 60334a2893fe). However, we still start DHCP/IPv6-autoconf +and, especially, we change sysctl values of the device. + +To be sure that no action is taken on the device, return early from +the IP configuration phase, as in the method=disabled/ignore case. + +https://bugzilla.redhat.com/show_bug.cgi?id=1530288 +(cherry picked from commit 22f32a16f5aa0a24fd124ad5788959936e22acff) +(cherry picked from commit a169247b7dda0c27707861e6cbc808ecfd4c5e85) +--- + src/devices/nm-device.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index babef21ad..b3b31ea45 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -8159,6 +8159,12 @@ nm_device_activate_stage3_ip4_start (NMDevice *self) + + g_assert (priv->ip4_state == IP_WAIT); + ++ if (nm_device_sys_iface_state_is_external (self)) { ++ _set_ip_state (self, AF_INET, IP_DONE); ++ check_ip_state (self, FALSE); ++ return TRUE; ++ } ++ + _set_ip_state (self, AF_INET, IP_CONF); + ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip4_config_start (self, &ip4_config, &failure_reason); + if (ret == NM_ACT_STAGE_RETURN_SUCCESS) { +@@ -8200,6 +8206,12 @@ nm_device_activate_stage3_ip6_start (NMDevice *self) + + g_assert (priv->ip6_state == IP_WAIT); + ++ if (nm_device_sys_iface_state_is_external (self)) { ++ _set_ip_state (self, AF_INET6, IP_DONE); ++ check_ip_state (self, FALSE); ++ return TRUE; ++ } ++ + _set_ip_state (self, AF_INET6, IP_CONF); + ret = NM_DEVICE_GET_CLASS (self)->act_stage3_ip6_config_start (self, &ip6_config, &failure_reason); + if (ret == NM_ACT_STAGE_RETURN_SUCCESS) { +-- +2.14.3 + diff --git a/SOURCES/0014-translations-rh1382625.patch b/SOURCES/0014-translations-rh1382625.patch deleted file mode 100644 index 9ea4aae..0000000 --- a/SOURCES/0014-translations-rh1382625.patch +++ /dev/null @@ -1,2823 +0,0 @@ -From 5a10ecc088f1af661ba4b6b419948620d6780f52 Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Mon, 29 May 2017 15:27:04 +0200 -Subject: [PATCH 2/2] po: import Japanese translation - -https://bugzilla.redhat.com/show_bug.cgi?id=1382625 ---- - po/ja.po | 1250 +++++++++++++++++++++++++++++++------------------------------- - 1 file changed, 618 insertions(+), 632 deletions(-) - -diff --git a/po/ja.po b/po/ja.po -index 022bfef..620dfb6 100644 ---- a/po/ja.po -+++ b/po/ja.po -@@ -5,9 +5,8 @@ - # Satoru SATOH , 2005-2007. - # Kiyoto Hashida , 2010. - # Noriko Mizumoto , 2013 - 2014. --# Lubomir Rintel , 2016. #zanata --# Lubomir Rintel , 2017. #zanata --# Thomas Haller , 2017. #zanata -+# kmoriguc , 2017. #zanata -+# lrintel , 2017. #zanata - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" -@@ -21,7 +20,7 @@ msgstr "" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" - "Plural-Forms: Plural-Forms: nplurals=1; plural=0;\n" --"X-Generator: Zanata 3.9.6\n" -+"X-Generator: Zanata 4.1.1\n" - - #: ../clients/cli/agent.c:39 - #, c-format -@@ -31,7 +30,7 @@ msgid "" - "COMMAND := { secret | polkit | all }\n" - "\n" - msgstr "" --"Usage: nmcli agent { COMMAND | help }\n" -+"使い方: nmcli agent { COMMAND | help }\n" - "\n" - "COMMAND := { secret | polkit | all }\n" - "\n" -@@ -164,26 +163,27 @@ msgid "invalid IP address: %s" - msgstr "無効な IP アドレス: %s" - - #: ../clients/cli/common.c:426 --#, fuzzy - msgid "" - "The valid syntax is: 'ip[/prefix] [next-hop] [metric] [attribute=val]... [," - "ip[/prefix] ...]'" --msgstr "'%s' は無効です (書式: ip[/prefix] [next-hop] [metric])" -+msgstr "" -+"有効な構文は以下のようになります: 'ip[/prefix] [next-hop] [metric] " -+"[attribute=val]... [,ip[/prefix] ...]'" - - #: ../clients/cli/common.c:458 - #, c-format - msgid "the next hop ('%s') must be first" --msgstr "" -+msgstr "次のホップ ('%s') が初回である必要があります" - - #: ../clients/cli/common.c:464 - #, c-format - msgid "the metric ('%s') must be before attributes" --msgstr "" -+msgstr "メトリック ('%s') が属性の前にある必要があります" - - #: ../clients/cli/common.c:504 --#, fuzzy, c-format -+#, c-format - msgid "invalid route: %s. " --msgstr "無効なルート: %s" -+msgstr "無効なルート: %s。" - - #: ../clients/cli/common.c:516 - msgid "default route cannot be added (NetworkManager handles it by itself)" -@@ -571,42 +571,42 @@ msgstr "'%s' は有効な優先度ではありません (<0-%ld>)" - #: ../clients/cli/common.c:911 - #, c-format - msgid "cannot read team config from file '%s'" --msgstr "" -+msgstr "ファイル '%s' から team 設定を読み込めません" - - #: ../clients/cli/common.c:918 - #, c-format - msgid "team config file '%s' contains non-valid utf-8" --msgstr "" -+msgstr "team 設定ファイル '%s' には無効な utf-8 が含まれています" - - #: ../clients/cli/common.c:930 --#, fuzzy, c-format -+#, c-format - msgid "'%s' does not contain a valid team configuration" --msgstr "'%s' は有効な team 設定でもファイル名でもありません" -+msgstr "'%s' には有効な team 設定が含まれていません" - - #: ../clients/cli/common.c:933 - #, c-format - msgid "team configuration must be a JSON object" --msgstr "" -+msgstr "team 設定は JSON オブジェクトである必要があります" - - #: ../clients/cli/common.c:986 - #, c-format - msgid "cannot read pac-script from file '%s'" --msgstr "" -+msgstr "ファイル '%s' から pac-script を読み込めません" - - #: ../clients/cli/common.c:993 --#, fuzzy, c-format -+#, c-format - msgid "file '%s' contains non-valid utf-8" --msgstr "インデックス '%s' は無効です" -+msgstr "ファイル '%s' には無効な utf-8 が含まれています" - - #: ../clients/cli/common.c:1006 --#, fuzzy, c-format -+#, c-format - msgid "'%s' does not contain a valid PAC Script" --msgstr "'%s' は有効な PSK ではありません" -+msgstr "'%s' には有効な PAC スクリプトが含まれていません" - - #: ../clients/cli/common.c:1009 --#, fuzzy, c-format -+#, c-format - msgid "Not a valid PAC Script" --msgstr "は有効な MAC アドレスではありません" -+msgstr "有効な PAC スクリプトではありません" - - #: ../clients/cli/common.c:1132 - #, c-format -@@ -644,16 +644,15 @@ msgstr "エラー: NetworkManager が起動していません。" - #: ../clients/cli/common.c:1768 - #, c-format - msgid "Error: argument '%s' not understood. Try passing --help instead." --msgstr "" -+msgstr "エラー: 引数 '%s' が認識されません。代わりに --help を渡してください。" - - #: ../clients/cli/common.c:1778 --#, fuzzy - msgid "Error: missing argument. Try passing --help." --msgstr "エラー: %s オプション用の引数がありません。" -+msgstr "エラー: 引数がありません。--help を渡してください。" - - #: ../clients/cli/common.c:1831 - msgid "access denied" --msgstr "" -+msgstr "アクセスは拒否されました" - - #. define some prompts for connection editor - #: ../clients/cli/connections.c:62 -@@ -670,48 +669,40 @@ msgstr "接続タイプを入力してください: " - - #. define some other prompts - #: ../clients/cli/connections.c:67 --#, fuzzy - msgid "Connection type" --msgstr "接続タイプ: " -+msgstr "接続タイプ" - - #: ../clients/cli/connections.c:68 --#, fuzzy - msgid "Interface name [*]" --msgstr "インターフェース名 [*]: " -+msgstr "インターフェース名 [*]" - - #: ../clients/cli/connections.c:69 --#, fuzzy - msgid "VPN type" --msgstr "VPN タイプ: " -+msgstr "VPN タイプ" - - #: ../clients/cli/connections.c:70 --#, fuzzy - msgid "Master" --msgstr "マスター: " -+msgstr "マスター" - - #: ../clients/cli/connections.c:72 ../clients/tui/nmt-page-infiniband.c:88 - msgid "Transport mode" - msgstr "トランスポートモード" - - #: ../clients/cli/connections.c:77 --#, fuzzy - msgid "Bluetooth type" --msgstr "Bluetooth タイプ %s" -+msgstr "Bluetooth タイプ" - - #: ../clients/cli/connections.c:83 --#, fuzzy - msgid "Bonding mode" --msgstr "ボンディングモニタリングモード %s" -+msgstr "ボンディングモード" - - #: ../clients/cli/connections.c:85 ../clients/cli/connections.c:4320 --#, fuzzy - msgid "Bonding monitoring mode" --msgstr "ボンディングモニタリングモード %s" -+msgstr "ボンディングモニタリングモード" - - #: ../clients/cli/connections.c:90 --#, fuzzy - msgid "Protocol" --msgstr "プロトコル %s" -+msgstr "プロトコル" - - #: ../clients/cli/connections.c:93 - msgid "Wi-Fi mode" -@@ -722,48 +713,40 @@ msgid "ADSL encapsulation" - msgstr "ADSL カプセル化" - - #: ../clients/cli/connections.c:102 --#, fuzzy - msgid "Tun mode" --msgstr "トンネルモード: " -+msgstr "トンネルモード" - - #: ../clients/cli/connections.c:107 --#, fuzzy - msgid "IP Tunnel mode" --msgstr "トンネルモード: " -+msgstr "IP トンネルモード" - - #: ../clients/cli/connections.c:109 --#, fuzzy - msgid "MACVLAN mode" --msgstr "MACVLAN モード: " -+msgstr "MACVLAN モード" - - #: ../clients/cli/connections.c:111 --#, fuzzy - msgid "MACsec mode" --msgstr "MACVLAN モード: " -+msgstr "MACsec モード" - - #: ../clients/cli/connections.c:116 - msgid "Proxy method" --msgstr "" -+msgstr "プロキシメソッド" - - #: ../clients/cli/connections.c:121 --#, fuzzy - msgid "Connection (name, UUID, or path)" --msgstr "接続 (名前、UUID またはパス): " -+msgstr "接続 (名前、UUID またはパス)" - - #: ../clients/cli/connections.c:122 --#, fuzzy - msgid "VPN connection (name, UUID, or path)" --msgstr "VPN 接続 (名前、UUID またはパス): " -+msgstr "VPN 接続 (名前、UUID またはパス)" - - #: ../clients/cli/connections.c:123 --#, fuzzy - msgid "Connection(s) (name, UUID, or path)" --msgstr "接続 (名前、UUID またはパス): " -+msgstr "接続 (名前、UUID またはパス)" - - #: ../clients/cli/connections.c:124 --#, fuzzy - msgid "Connection(s) (name, UUID, path or apath)" --msgstr "接続 (名前、UUID またはパス): " -+msgstr "接続 (名前、UUID、パス または apath)" - - #. 0 - #: ../clients/cli/connections.c:130 ../clients/cli/connections.c:225 -@@ -867,7 +850,6 @@ msgstr "ACTIVE-PATH" - - #. 12 - #: ../clients/cli/connections.c:143 --#, fuzzy - msgid "SLAVE" - msgstr "スレーブ" - -@@ -966,7 +948,7 @@ msgid "DHCP6" - msgstr "DHCP6" - - #: ../clients/cli/connections.c:301 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli connection { COMMAND | help }\n" - "\n" -@@ -1005,10 +987,10 @@ msgid "" - " export [id | uuid | path] []\n" - "\n" - msgstr "" --"Usage: nmcli connection { COMMAND | help }\n" -+"使い方: nmcli connection { COMMAND | help }\n" - "\n" --"COMMAND := { show | up | down | add | modify | edit | delete | monitor | " --"reload | load }\n" -+"COMMAND := { show | up | down | add | modify | clone | edit | delete | " -+"monitor | reload | load | import | export }\n" - "\n" - " show [--active] [--order ]\n" - " show [--active] [id | uuid | path | apath] ...\n" -@@ -1308,6 +1290,153 @@ msgid "" - " [ip6 ] [gw6 ]\n" - "\n" - msgstr "" -+"使い方: nmcli connection add { ARGUMENTS | help }\n" -+"\n" -+"ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS " -+"[-- ([+|-]. )+]\n" -+"\n" -+" COMMON_OPTIONS:\n" -+" type \n" -+" ifname | \"*\"\n" -+" [con-name ]\n" -+" [autoconnect yes|no]\n" -+" [save yes|no]\n" -+" [master ]\n" -+" [slave-type ]\n" -+"\n" -+" TYPE_SPECIFIC_OPTIONS:\n" -+" ethernet: [mac ]\n" -+" [cloned-mac ]\n" -+" [mtu ]\n" -+"\n" -+" wifi: ssid \n" -+" [mac ]\n" -+" [cloned-mac ]\n" -+" [mtu ]\n" -+" [mode infrastructure|ap|adhoc]\n" -+"\n" -+" wimax: [mac ]\n" -+" [nsp ]\n" -+"\n" -+" pppoe: username \n" -+" [password ]\n" -+" [service ]\n" -+" [mtu ]\n" -+" [mac ]\n" -+"\n" -+" gsm: apn \n" -+" [user ]\n" -+" [password ]\n" -+"\n" -+" cdma: [user ]\n" -+" [password ]\n" -+"\n" -+" infiniband: [mac ]\n" -+" [mtu ]\n" -+" [transport-mode datagram | connected]\n" -+" [parent ]\n" -+" [p-key ]\n" -+"\n" -+" bluetooth: [addr ]\n" -+" [bt-type panu|dun-gsm|dun-cdma]\n" -+"\n" -+" vlan: dev \n" -+" id \n" -+" [flags ]\n" -+" [ingress ]\n" -+" [egress ]\n" -+" [mtu ]\n" -+"\n" -+" bond: [mode balance-rr (0) | active-backup (1) | balance-xor (2) " -+"| broadcast (3) |\n" -+" 802.3ad (4) | balance-tlb (5) | balance-alb " -+"(6)]\n" -+" [primary ]\n" -+" [miimon ]\n" -+" [downdelay ]\n" -+" [updelay ]\n" -+" [arp-interval ]\n" -+" [arp-ip-target ]\n" -+" [lacp-rate slow (0) | fast (1)]\n" -+"\n" -+" bond-slave: master \n" -+"\n" -+" team: [config |]\n" -+"\n" -+" team-slave: master \n" -+" [config |]\n" -+"\n" -+" bridge: [stp yes|no]\n" -+" [priority ]\n" -+" [forward-delay <2-30>]\n" -+" [hello-time <1-10>]\n" -+" [max-age <6-40>]\n" -+" [ageing-time <0-1000000>]\n" -+" [multicast-snooping yes|no]\n" -+" [mac ]\n" -+"\n" -+" bridge-slave: master \n" -+" [priority <0-63>]\n" -+" [path-cost <1-65535>]\n" -+" [hairpin yes|no]\n" -+"\n" -+" vpn: vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|" -+"ssh|l2tp|iodine|...\n" -+" [user ]\n" -+"\n" -+" olpc-mesh: ssid \n" -+" [channel <1-13>]\n" -+" [dhcp-anycast ]\n" -+"\n" -+" adsl: username \n" -+" protocol pppoa|pppoe|ipoatm\n" -+" [password ]\n" -+" [encapsulation vcmux|llc]\n" -+"\n" -+" tun: mode tun|tap\n" -+" [owner ]\n" -+" [group ]\n" -+" [pi yes|no]\n" -+" [vnet-hdr yes|no]\n" -+" [multi-queue yes|no]\n" -+"\n" -+" ip-tunnel: mode ipip|gre|sit|isatap|vti|ip6ip6|ipip6|ip6gre|vti6\n" -+" remote \n" -+" [local ]\n" -+" [dev ]\n" -+"\n" -+" macsec: dev \n" -+" mode \n" -+" [cak ckn ]\n" -+" [encrypt yes|no]\n" -+" [port 1-65534]\n" -+"\n" -+"\n" -+" macvlan: dev \n" -+" mode vepa|bridge|private|passthru|source\n" -+" [tap yes|no]\n" -+"\n" -+" vxlan: id \n" -+" remote \n" -+" [local ]\n" -+" [dev ]\n" -+" [source-port-min <0-65535>]\n" -+" [source-port-max <0-65535>]\n" -+" [destination-port <0-65535>]\n" -+"\n" -+" dummy: \n" -+"\n" -+" SLAVE_OPTIONS:\n" -+" bridge: [priority <0-63>]\n" -+" [path-cost <1-65535>]\n" -+" [hairpin yes|no]\n" -+"\n" -+" team: [config |]\n" -+"\n" -+" IP_OPTIONS:\n" -+" [ip4 ] [gw4 ]\n" -+" [ip6 ] [gw6 ]\n" -+"\n" - - #: ../clients/cli/connections.c:495 - #, c-format -@@ -1581,7 +1710,6 @@ msgid "never" - msgstr "しない" - - #: ../clients/cli/connections.c:1190 --#, fuzzy - msgid "Activate connection details" - msgstr "アクティブな接続の詳細" - -@@ -1607,19 +1735,18 @@ msgid "incorrect item '%s' in '--order' option" - msgstr "'--order' オプションの正しくないアイテム '%s'" - - #: ../clients/cli/connections.c:1705 --#, fuzzy - msgid "No connection specified" --msgstr "エラー: 接続が指定されていません。" -+msgstr "接続が指定されていません。" - - #: ../clients/cli/connections.c:1720 --#, fuzzy, c-format -+#, c-format - msgid "%s argument is missing" --msgstr "エラー: %s 引数がありません。" -+msgstr "%s 引数がありません。" - - #: ../clients/cli/connections.c:1730 --#, fuzzy, c-format -+#, c-format - msgid "unknown connection '%s'" --msgstr "エラー: 不明な接続 '%s'\n" -+msgstr "不明な接続 '%s'" - - #: ../clients/cli/connections.c:1763 - msgid "'--order' argument is missing" -@@ -1678,9 +1805,9 @@ msgid "no active connection or device" - msgstr "アクティブな接続またはデバイスがありません" - - #: ../clients/cli/connections.c:2081 --#, fuzzy, c-format -+#, c-format - msgid "device '%s' not compatible with connection '%s':" --msgstr "デバイス '%s' は接続 '%s' と互換性がありません" -+msgstr "デバイス '%s' は接続 '%s' と互換性がありません:" - - #: ../clients/cli/connections.c:2117 - #, c-format -@@ -1693,84 +1820,68 @@ msgid "no device found for connection '%s'" - msgstr "接続 '%s'用のデバイスが見つかりません" - - #: ../clients/cli/connections.c:2140 --#, fuzzy - msgid "Unknown reason" - msgstr "不明な理由" - - #: ../clients/cli/connections.c:2142 --#, fuzzy - msgid "The connection was disconnected" --msgstr "接続はボンド接続ではありませんでした。" -+msgstr "接続が切断されました" - - #: ../clients/cli/connections.c:2144 --#, fuzzy - msgid "Disconnected by user" --msgstr "D-Bus により切断" -+msgstr "ユーザーにより切断" - - #: ../clients/cli/connections.c:2146 --#, fuzzy - msgid "The base network connection was interrupted" --msgstr "基本ネットワーク接続が妨害されました。" -+msgstr "基本ネットワーク接続が中断されました。" - - #: ../clients/cli/connections.c:2148 --#, fuzzy - msgid "The VPN service stopped unexpectedly" --msgstr "VPN サービスが予期しない停止をしました" -+msgstr "VPN サービスが予期せず停止しました" - - #: ../clients/cli/connections.c:2150 --#, fuzzy - msgid "The VPN service returned invalid configuration" --msgstr "VPN サービスは無効な設定を返しました" -+msgstr "VPN サービスが無効な設定を返しました" - - #: ../clients/cli/connections.c:2152 --#, fuzzy - msgid "The connection attempt timed out" --msgstr "接続試行は時間切れです" -+msgstr "接続試行がタイムアウトしました" - - #: ../clients/cli/connections.c:2154 --#, fuzzy - msgid "The VPN service did not start in time" --msgstr "VPN サービスは時間内に開始していません" -+msgstr "VPN サービスは時間内に開始しませんでした" - - #: ../clients/cli/connections.c:2156 --#, fuzzy - msgid "The VPN service failed to start" --msgstr "VPN サービスの開始は失敗しました" -+msgstr "VPN サービスの開始に失敗しました" - - #: ../clients/cli/connections.c:2158 --#, fuzzy - msgid "No valid secrets" --msgstr "有効な VPN シークレットはありません" -+msgstr "有効なシークレットはありません" - - #: ../clients/cli/connections.c:2160 --#, fuzzy - msgid "Invalid secrets" --msgstr "無効な VPN シークレット" -+msgstr "無効なシークレット" - - #: ../clients/cli/connections.c:2162 --#, fuzzy - msgid "The connection was removed" - msgstr "接続は削除されました" - - #: ../clients/cli/connections.c:2164 --#, fuzzy - msgid "Master connection failed" --msgstr "接続に失敗" -+msgstr "マスター接続に失敗しました" - - #: ../clients/cli/connections.c:2166 --#, fuzzy - msgid "Could not create a software link" --msgstr "一時ファイルを作成できませんでした: %s" -+msgstr "ソフトウェアリンクを作成できませんでした" - - #: ../clients/cli/connections.c:2168 --#, fuzzy - msgid "The device disappeared" --msgstr "このデバイスのアクティブな接続が消滅しました" -+msgstr "デバイスが消滅しました" - - #: ../clients/cli/connections.c:2171 --#, fuzzy - msgid "Invalid reason" --msgstr "無効なルート: %s" -+msgstr "無効な理由" - - #: ../clients/cli/connections.c:2196 ../clients/cli/connections.c:2366 - #: ../clients/cli/connections.c:6468 -@@ -1794,9 +1905,9 @@ msgstr "" - "Bus アクティブパス: %s)\n" - - #: ../clients/cli/connections.c:2261 --#, fuzzy, c-format -+#, c-format - msgid "Error: Timeout expired (%d seconds)" --msgstr "エラー: 制限時間の %d 秒が経過" -+msgstr "エラー: タイムアウト (%d 秒) になりました" - - #: ../clients/cli/connections.c:2427 - #, c-format -@@ -1871,9 +1982,9 @@ msgid "Error: no active connection provided." - msgstr "エラー: アクティブな接続がありません。" - - #: ../clients/cli/connections.c:2878 --#, fuzzy, c-format -+#, c-format - msgid "Connection '%s' deactivation failed: %s\n" --msgstr "エラー: 接続のアクティベーションに失敗: %s" -+msgstr "接続 '%s' の非アクティブ化に失敗しました: %s\n" - - #: ../clients/cli/connections.c:3341 ../clients/cli/utils.c:710 - #, c-format -@@ -1906,14 +2017,14 @@ msgid "Error: failed to remove a value from %s.%s: %s." - msgstr "エラー: '%s' の値の削除に失敗しました、%s: %s。" - - #: ../clients/cli/connections.c:3748 --#, fuzzy, c-format -+#, c-format - msgid "Error: '%s' is mandatory." --msgstr "エラー: '%s' を繰り返すことはできません。" -+msgstr "エラー: '%s' は必須です。" - - #: ../clients/cli/connections.c:3780 --#, fuzzy, c-format -+#, c-format - msgid "Error: invalid slave type; %s." --msgstr "エラー: 無効な接続タイプ; %s。" -+msgstr "エラー: 無効なスレーブタイプ; %s。" - - #: ../clients/cli/connections.c:3793 - #, c-format -@@ -1921,24 +2032,23 @@ msgid "Error: invalid connection type; %s." - msgstr "エラー: 無効な接続タイプ; %s。" - - #: ../clients/cli/connections.c:4002 --#, fuzzy, c-format -+#, c-format - msgid "Error: bad connection type: %s." --msgstr "エラー: 無効な接続タイプ; %s。" -+msgstr "エラー: 問題のある接続タイプ; %s。" - - #: ../clients/cli/connections.c:4065 --#, fuzzy, c-format -+#, c-format - msgid "Error: '%s': %s" --msgstr "エラー: %s: %s。" -+msgstr "エラー: '%s': %s" - - #: ../clients/cli/connections.c:4086 --#, fuzzy - msgid "Error: master is required" --msgstr "エラー: 'マスター' が必要です。" -+msgstr "エラー: マスターが必要です" - - #: ../clients/cli/connections.c:4145 --#, fuzzy, c-format -+#, c-format - msgid "Error: error adding bond option '%s=%s'." --msgstr "エラー: 不明な接続 '%s' です。" -+msgstr "エラー: ボンドオプション '%s=%s' の追加中にエラー。" - - #: ../clients/cli/connections.c:4176 - #, c-format -@@ -1954,48 +2064,40 @@ msgstr "" - "エラー: 'bt-type': '%s' は無効です; [%s, %s (%s), %s] を使用してください。" - - #: ../clients/cli/connections.c:4282 --#, fuzzy - msgid "PPPoE username" --msgstr "PPPoE ユーザー名: " -+msgstr "PPPoE ユーザー名" - - #: ../clients/cli/connections.c:4283 ../clients/cli/connections.c:4304 - #: ../clients/cli/connections.c:4306 ../clients/cli/connections.c:4355 --#, fuzzy - msgid "Password [none]" --msgstr "パスワード [none]: " -+msgstr "パスワード [none]" - - #: ../clients/cli/connections.c:4284 --#, fuzzy - msgid "Service [none]" --msgstr "サービス [none]: " -+msgstr "サービス [none]" - - #: ../clients/cli/connections.c:4285 ../clients/cli/connections.c:4288 - #: ../clients/cli/connections.c:4297 --#, fuzzy - msgid "MTU [auto]" --msgstr "MTU [auto]: " -+msgstr "MTU [auto]" - - #: ../clients/cli/connections.c:4286 ../clients/cli/connections.c:4289 - #: ../clients/cli/connections.c:4298 ../clients/cli/connections.c:4301 - #: ../clients/cli/connections.c:4342 --#, fuzzy - msgid "MAC [none]" --msgstr "MAC [none]: " -+msgstr "MAC [none]" - - #: ../clients/cli/connections.c:4287 ../clients/cli/connections.c:4299 --#, fuzzy - msgid "Cloned MAC [none]" --msgstr "クローンの MAC [none]: " -+msgstr "クローンしたMAC [none]" - - #: ../clients/cli/connections.c:4292 --#, fuzzy - msgid "Parent interface [none]" --msgstr "親インターフェース [none]: " -+msgstr "親インターフェース [none]" - - #: ../clients/cli/connections.c:4293 --#, fuzzy - msgid "P_KEY [none]" --msgstr "P_KEY [none]: " -+msgstr "P_KEY [none]" - - #. 0 - #: ../clients/cli/connections.c:4294 ../clients/cli/connections.c:4349 -@@ -2004,150 +2106,121 @@ msgid "SSID" - msgstr "SSID" - - #: ../clients/cli/connections.c:4300 --#, fuzzy - msgid "WiMAX NSP name" --msgstr "WiMAX NSP 名: " -+msgstr "WiMAX NSP 名" - - #: ../clients/cli/connections.c:4302 --#, fuzzy - msgid "APN" --msgstr "AP" -+msgstr "APN" - - #: ../clients/cli/connections.c:4303 ../clients/cli/connections.c:4305 - #: ../clients/cli/connections.c:4348 --#, fuzzy - msgid "Username [none]" --msgstr "ユーザー名 [none]: " -+msgstr "ユーザー名 [none]" - - #: ../clients/cli/connections.c:4307 --#, fuzzy - msgid "Bluetooth device address" --msgstr "Bluetooth デバイスアドレス: " -+msgstr "Bluetooth デバイスアドレス" - - #: ../clients/cli/connections.c:4310 --#, fuzzy - msgid "VLAN parent device or connection UUID" --msgstr "VLAN 親デバイスまたは接続 UUID: " -+msgstr "VLAN 親デバイスまたは接続 UUID" - - #: ../clients/cli/connections.c:4312 --#, fuzzy - msgid "VLAN ID (<0-4094>)" --msgstr "VLAN ID <0-4094>: " -+msgstr "VLAN ID (<0-4094>)" - - #: ../clients/cli/connections.c:4313 --#, fuzzy - msgid "VLAN flags (<0-7>) [none]" --msgstr "VLAN フラグ (<0-7>) [none]: " -+msgstr "VLAN フラグ (<0-7>) [none]" - - #: ../clients/cli/connections.c:4314 --#, fuzzy - msgid "Ingress priority maps [none]" --msgstr "イングレス優先度マップ [none]: " -+msgstr "イングレス優先度マップ [none]" - - #: ../clients/cli/connections.c:4315 --#, fuzzy - msgid "Egress priority maps [none]" --msgstr "イーグレス優先度マップ [none]: " -+msgstr "イーグレス優先度マップ [none]" - - #: ../clients/cli/connections.c:4318 --#, fuzzy - msgid "Bonding primary interface [none]" --msgstr "ボンドのプライマリインターフェース [none]:" -+msgstr "ボンドのプライマリインターフェース [none]" - - #: ../clients/cli/connections.c:4322 --#, fuzzy - msgid "Bonding miimon [100]" --msgstr "ボンドの miimon [100]:" -+msgstr "ボンドの miimon [100]" - - #: ../clients/cli/connections.c:4323 --#, fuzzy - msgid "Bonding downdelay [0]" --msgstr "ボンドの downdelay [0]: " -+msgstr "ボンドの downdelay [0]" - - #: ../clients/cli/connections.c:4324 --#, fuzzy - msgid "Bonding updelay [0]" --msgstr "ボンドの updelay [0]: " -+msgstr "ボンドの updelay [0]" - - #: ../clients/cli/connections.c:4325 --#, fuzzy - msgid "Bonding arp-interval [0]" --msgstr "ボンドの arp-interval [0]: " -+msgstr "ボンドの arp-interval [0]" - - #: ../clients/cli/connections.c:4327 --#, fuzzy - msgid "Bonding arp-ip-target [none]" --msgstr "ボンドの arp-ip-target [none]: " -+msgstr "ボンドの arp-ip-target [none]" - - #: ../clients/cli/connections.c:4329 --#, fuzzy - msgid "LACP rate ('slow' or 'fast') [slow]" --msgstr "LACP レート ('低速' または '高速') [低速]: " -+msgstr "LACP レート ('slow' または 'fast') [slow]" - - #: ../clients/cli/connections.c:4331 ../clients/cli/connections.c:4332 --#, fuzzy - msgid "Team JSON configuration [none]" --msgstr "team JSON 設定 [none]: " -+msgstr "team JSON 設定 [none]" - - #: ../clients/cli/connections.c:4333 --#, fuzzy - msgid "Enable STP [no]" --msgstr "STP %s の有効化 " -+msgstr "STP の有効化 [no]" - - #: ../clients/cli/connections.c:4335 --#, fuzzy - msgid "STP priority [32768]" --msgstr "STP の優先度 [32768]: " -+msgstr "STP の優先度 [32768]" - - #: ../clients/cli/connections.c:4336 --#, fuzzy - msgid "Forward delay [15]" --msgstr "フォワード遅延 [15]:" -+msgstr "フォワード遅延 [15]" - - #: ../clients/cli/connections.c:4337 --#, fuzzy - msgid "Hello time [2]" --msgstr "Hello タイム [2]: " -+msgstr "Hello タイム [2]" - - #: ../clients/cli/connections.c:4338 --#, fuzzy - msgid "Max age [20]" --msgstr "最大エイジ [20]: " -+msgstr "最大エイジ [20]" - - #: ../clients/cli/connections.c:4339 --#, fuzzy - msgid "MAC address ageing time [300]" --msgstr "MAC アドレスのエージングタイム [300]:" -+msgstr "MAC アドレスのエージングタイム [300]" - - #: ../clients/cli/connections.c:4340 --#, fuzzy - msgid "Enable IGMP snooping [no]" --msgstr "IGMP スヌーピングの有効化" -+msgstr "IGMP スヌーピングの有効化 [no]" - - #: ../clients/cli/connections.c:4343 --#, fuzzy - msgid "Bridge port priority [32]" --msgstr "ブリッジポートの優先度 [32]:" -+msgstr "ブリッジポートの優先度 [32]" - - #: ../clients/cli/connections.c:4344 --#, fuzzy - msgid "Bridge port STP path cost [100]" --msgstr "ブリッジポートの STP パスコスト [100]: " -+msgstr "ブリッジポートの STP パスコスト [100]" - - #: ../clients/cli/connections.c:4345 --#, fuzzy - msgid "Hairpin [no]" --msgstr "ヘアピンモード" -+msgstr "ヘアピン [no]" - - #: ../clients/cli/connections.c:4350 --#, fuzzy - msgid "OLPC Mesh channel [1]" --msgstr "OLPC メッシュチャンネル [1]: " -+msgstr "OLPC メッシュチャンネル [1]" - - #: ../clients/cli/connections.c:4351 --#, fuzzy - msgid "DHCP anycast MAC address [none]" --msgstr "DHCP anycast MAC アドレス [none]: " -+msgstr "DHCP anycast MAC アドレス [none]" - - #. TTLS and PEAP are actually much more complicated, but this complication - #. * is not visible here since we only care about phase2 authentication -@@ -2162,130 +2235,112 @@ msgstr "ユーザー名" - - #: ../clients/cli/connections.c:4358 - msgid "MACsec parent device or connection UUID" --msgstr "" -+msgstr "MACsec 親デバイスまたは接続 UUID" - - #: ../clients/cli/connections.c:4360 - msgid "Enable encryption [yes]" --msgstr "" -+msgstr "暗号化の有効化 [yes]" - - #: ../clients/cli/connections.c:4361 - #: ../clients/common/nm-secret-agent-simple.c:520 - msgid "MKA CAK" --msgstr "" -+msgstr "MKA CAK" - - #: ../clients/cli/connections.c:4362 - msgid "MKA_CKN" --msgstr "" -+msgstr "MKA_CKN" - - #: ../clients/cli/connections.c:4363 - msgid "SCI port [1]" --msgstr "" -+msgstr "SCI ポート [1]" - - #: ../clients/cli/connections.c:4365 --#, fuzzy - msgid "MACVLAN parent device or connection UUID" --msgstr "MACVLAN 親デバイスまたは接続 UUID: " -+msgstr "MACVLAN 親デバイスまたは接続 UUID" - - #: ../clients/cli/connections.c:4369 - msgid "Tap [no]" --msgstr "" -+msgstr "Tap [no]" - - #: ../clients/cli/connections.c:4371 --#, fuzzy - msgid "VXLAN ID" --msgstr "VXLAN ID: " -+msgstr "VXLAN ID" - - #: ../clients/cli/connections.c:4372 ../clients/cli/connections.c:4391 --#, fuzzy - msgid "Remote" --msgstr "リモート: " -+msgstr "リモート" - - #: ../clients/cli/connections.c:4373 ../clients/cli/connections.c:4392 --#, fuzzy - msgid "Parent device [none]" --msgstr "親デバイス [none]: " -+msgstr "親デバイス [none]" - - #: ../clients/cli/connections.c:4375 --#, fuzzy - msgid "Local address [none]" --msgstr "ローカルアドレス [none]: " -+msgstr "ローカルアドレス [none]" - - #: ../clients/cli/connections.c:4376 --#, fuzzy - msgid "Minimum source port [0]" --msgstr "最小ソースポート [0]: " -+msgstr "最小ソースポート数 [0]" - - #: ../clients/cli/connections.c:4377 --#, fuzzy - msgid "Maximum source port [0]" --msgstr "最小ソースポート [0]: " -+msgstr "最大ソースポート数 [0]" - - #: ../clients/cli/connections.c:4378 --#, fuzzy - msgid "Destination port [8472]" --msgstr "送信先ポート [8472]: " -+msgstr "接続先ポート [8472]" - - #: ../clients/cli/connections.c:4381 --#, fuzzy - msgid "User ID [none]" --msgstr "ユーザー ID [none]: " -+msgstr "ユーザー ID [none]" - - #: ../clients/cli/connections.c:4382 --#, fuzzy - msgid "Group ID [none]" --msgstr "グループ ID [none]: " -+msgstr "グループ ID [none]" - - #: ../clients/cli/connections.c:4383 --#, fuzzy - msgid "Enable PI [no]" --msgstr "PI %s の有効化" -+msgstr "PI の有効化 [no]" - - #: ../clients/cli/connections.c:4385 --#, fuzzy - msgid "Enable VNET header [no]" --msgstr "VNET ヘッダー %s の有効化" -+msgstr "VNET ヘッダー の有効化 [no]" - - #: ../clients/cli/connections.c:4387 --#, fuzzy - msgid "Enable multi queue [no]" --msgstr "複数のキュー %s の有効化" -+msgstr "複数のキューの有効化 [no]" - - #: ../clients/cli/connections.c:4390 --#, fuzzy - msgid "Local endpoint [none]" --msgstr "ローカルエンドポイント [none]: " -+msgstr "ローカルエンドポイント [none]" - - #: ../clients/cli/connections.c:4394 --#, fuzzy - msgid "IPv4 address (IP[/plen]) [none]" --msgstr "IPv4 アドレス (IP[/plen]) [none]: " -+msgstr "IPv4 アドレス (IP[/plen]) [none]" - - #: ../clients/cli/connections.c:4396 --#, fuzzy - msgid "IPv4 gateway [none]" --msgstr "IPv4 ゲートウェイ [none]: " -+msgstr "IPv4 ゲートウェイ [none]" - - #: ../clients/cli/connections.c:4397 --#, fuzzy - msgid "IPv6 address (IP[/plen]) [none]" --msgstr "IPv6 アドレス (IP[/plen]) [none]: " -+msgstr "IPv6 アドレス (IP[/plen]) [none]" - - #: ../clients/cli/connections.c:4399 --#, fuzzy - msgid "IPv6 gateway [none]" --msgstr "IPv6 ゲートウェイ [none]: " -+msgstr "IPv6 ゲートウェイ [none]" - - #: ../clients/cli/connections.c:4401 - msgid "Browser only [no]" --msgstr "" -+msgstr "ブラウザー専用 [no]" - - #: ../clients/cli/connections.c:4403 - msgid "PAC URL" --msgstr "" -+msgstr "PAC URL" - - #: ../clients/cli/connections.c:4404 - msgid "PAC script" --msgstr "" -+msgstr "PAC スクリプト" - - #: ../clients/cli/connections.c:4539 - #, c-format -@@ -2302,9 +2357,9 @@ msgid "Error: invalid or not allowed setting '%s': %s." - msgstr "エラー: 無効または許可されていない設定 '%s' です: %s。" - - #: ../clients/cli/connections.c:4633 --#, fuzzy, c-format -+#, c-format - msgid "Error: '%s' is ambiguous (%s.%s or %s.%s)." --msgstr "'%s' が不明瞭です (%s x %s)" -+msgstr "エラー:'%s' があいまいです (%s.%s または %s.%s)。" - - #: ../clients/cli/connections.c:4647 - #, c-format -@@ -2326,13 +2381,15 @@ msgstr "接続 '%s' (%s) が正常に追加されました。\n" - msgid "" - "You can specify this option more than once. Press when you're done.\n" - msgstr "" -+"このオプションは複数回指定することができます。終了したら を押してくだ" -+"さい。\n" - - #. Ask for optional arguments. - #: ../clients/cli/connections.c:4854 --#, fuzzy, c-format -+#, c-format - msgid "There is %d optional setting for %s.\n" - msgid_plural "There are %d optional settings for %s.\n" --msgstr[0] "'%2$s' 接続タイプには %1$d 種類のオプション引数があります。\n" -+msgstr[0] "'%s' には %d のオプション設定があります。\n" - - #: ../clients/cli/connections.c:4857 - #, c-format -@@ -2341,81 +2398,68 @@ msgid_plural "Do you want to provide them? %s" - msgstr[0] "指定しますか? %s" - - #: ../clients/cli/connections.c:4871 --#, fuzzy - msgid "Wired Ethernet" --msgstr "Ethernet" -+msgstr "有線イーサネット" - - #: ../clients/cli/connections.c:4873 ../src/devices/nm-device-infiniband.c:192 - msgid "InfiniBand connection" - msgstr "InfiniBand 接続" - - #: ../clients/cli/connections.c:4875 --#, fuzzy - msgid "Wi-Fi connection" --msgstr "Wi-Fi 接続 %d" -+msgstr "Wi-Fi 接続" - - #: ../clients/cli/connections.c:4877 --#, fuzzy - msgid "WiMAX connection" --msgstr "CDMA 接続" -+msgstr "WiMAX 接続" - - #: ../clients/cli/connections.c:4879 - msgid "PPPoE" - msgstr "PPPoE" - - #: ../clients/cli/connections.c:4881 --#, fuzzy - msgid "CDMA mobile broadband connection" --msgstr "モバイルブロードバンド接続 %d" -+msgstr "CDMA モバイルブロードバンド接続" - - #: ../clients/cli/connections.c:4883 --#, fuzzy - msgid "GSM mobile broadband connection" --msgstr "モバイルブロードバンド接続 %d" -+msgstr "GSM モバイルブロードバンド接続" - - #: ../clients/cli/connections.c:4885 --#, fuzzy - msgid "bluetooth connection" --msgstr "ボンド接続" -+msgstr "bluetooth 接続" - - #: ../clients/cli/connections.c:4887 ../src/devices/nm-device-vlan.c:433 - msgid "VLAN connection" - msgstr "VLAN 接続" - - #: ../clients/cli/connections.c:4889 --#, fuzzy - msgid "Bond device" --msgstr "Ethernet デバイス" -+msgstr "Bond デバイス" - - #: ../clients/cli/connections.c:4891 --#, fuzzy - msgid "Team device" --msgstr "TUN デバイスモード" -+msgstr "Team デバイス" - - #: ../clients/cli/connections.c:4893 --#, fuzzy - msgid "Team port" --msgstr "team " -+msgstr "Team ポート" - - #: ../clients/cli/connections.c:4895 --#, fuzzy - msgid "Bridge device" --msgstr "Ethernet デバイス" -+msgstr "ブリッジデバイス" - - #: ../clients/cli/connections.c:4897 --#, fuzzy - msgid "Bridge port" --msgstr "ブリッジ" -+msgstr "ブリッジポート" - - #: ../clients/cli/connections.c:4899 ../src/nm-manager.c:4080 --#, fuzzy - msgid "VPN connection" - msgstr "VPN 接続" - - #: ../clients/cli/connections.c:4901 --#, fuzzy - msgid "OLPC Mesh connection" --msgstr "CDMA 接続" -+msgstr "OLPC Mesh 接続" - - #: ../clients/cli/connections.c:4903 ../src/devices/adsl/nm-device-adsl.c:137 - msgid "ADSL connection" -@@ -2423,35 +2467,31 @@ msgstr "ADSL 接続" - - #: ../clients/cli/connections.c:4905 - msgid "MACsec connection" --msgstr "" -+msgstr "MACsec 接続" - - #: ../clients/cli/connections.c:4907 --#, fuzzy - msgid "macvlan connection" --msgstr "ボンド接続" -+msgstr "macvlan 接続" - - #: ../clients/cli/connections.c:4909 ../src/devices/nm-device-vxlan.c:369 - msgid "VXLAN connection" - msgstr "VXLAN 接続" - - #: ../clients/cli/connections.c:4911 --#, fuzzy - msgid "Tun device" --msgstr "TUN デバイスモード" -+msgstr "TUN デバイス" - - #: ../clients/cli/connections.c:4913 --#, fuzzy - msgid "IPv4 protocol" --msgstr "ADSL プロトコル" -+msgstr "IPv4 プロトコル" - - #: ../clients/cli/connections.c:4915 --#, fuzzy - msgid "IPv6 protocol" --msgstr "ADSL プロトコル" -+msgstr "IPv6 プロトコル" - - #: ../clients/cli/connections.c:4917 - msgid "Proxy" --msgstr "" -+msgstr "プロキシ" - - #: ../clients/cli/connections.c:5004 ../clients/cli/utils.c:186 - #, c-format -@@ -2464,9 +2504,9 @@ msgid "Error: 'save': %s." - msgstr "エラー: 'save': %s。" - - #: ../clients/cli/connections.c:5082 --#, fuzzy, c-format -+#, c-format - msgid "Error: '%s' argument is required." --msgstr "エラー: 'タイプ' 引数が必要です。" -+msgstr "エラー: '%s' 引数が必要です。" - - #: ../clients/cli/connections.c:6054 - #, c-format -@@ -3268,9 +3308,9 @@ msgid "Error: Connection deletion failed: %s" - msgstr "エラー: 接続の削除に失敗しました: %s" - - #: ../clients/cli/connections.c:8391 ../clients/cli/connections.c:8516 --#, fuzzy, c-format -+#, c-format - msgid "Error: %s.\n" --msgstr "エラー: %s." -+msgstr "エラー: %s.\n" - - #: ../clients/cli/connections.c:8392 ../clients/cli/connections.c:8517 - #, c-format -@@ -3348,9 +3388,9 @@ msgid "Error: 'file' argument is required." - msgstr "エラー: 'file' 引数が必要です。" - - #: ../clients/cli/connections.c:8708 --#, fuzzy, c-format -+#, c-format - msgid "Error: failed to find VPN plugin for %s." --msgstr "エラー: VPN プラグインのロードに失敗しました: %s。" -+msgstr "エラー: %s 用の VPN プラグインが見つかりません。" - - #: ../clients/cli/connections.c:8716 ../clients/cli/connections.c:8817 - #, c-format -@@ -3392,7 +3432,6 @@ msgid "Interface: " - msgstr "インターフェース: " - - #: ../clients/cli/devices.c:37 --#, fuzzy - msgid "Interface(s): " - msgstr "インターフェース: " - -@@ -3520,7 +3559,7 @@ msgstr "速度" - #. 3 - #: ../clients/cli/devices.c:104 - msgid "SRIOV" --msgstr "" -+msgstr "SRIOV" - - #. 0 - #: ../clients/cli/devices.c:113 -@@ -3678,7 +3717,7 @@ msgstr "スレーブ" - #. 1 - #: ../clients/cli/devices.c:204 - msgid "CONFIG" --msgstr "" -+msgstr "CONFIG" - - #. 0 - #: ../clients/cli/devices.c:213 -@@ -3814,7 +3853,7 @@ msgid "PORT-ID-TYPE" - msgstr "PORT-ID-TYPE" - - #: ../clients/cli/devices.c:295 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli device { COMMAND | help }\n" - "\n" -@@ -3854,10 +3893,10 @@ msgid "" - " lldp [list [ifname ]]\n" - "\n" - msgstr "" --"使い方: nmcli device { コマンド | help }\n" -+"使い方: nmcli device { COMMAND | help }\n" - "\n" --"コマンド := { status | show | connect | reapply | disconnect | delete | " --"monitor | wifi | lldp }\n" -+"COMMAND := { status | show | set | connect | reapply | modify | disconnect | " -+"delete | monitor | wifi | lldp }\n" - "\n" - " status\n" - "\n" -@@ -3867,7 +3906,9 @@ msgstr "" - "\n" - " connect \n" - "\n" --" reapply ...\n" -+" reapply \n" -+"\n" -+" modify ([+|-]. )+\n" - "\n" - " disconnect ...\n" - "\n" -@@ -3877,15 +3918,15 @@ msgstr "" - "\n" - " wifi [list [ifname ] [bssid ]]\n" - "\n" --" wifi connect <(B)SSID> [password <パスワード>] [wep-key-type key|phrase] " -+" wifi connect <(B)SSID> [password ] [wep-key-type key|phrase] " - "[ifname ]\n" --" [bssid ] [name <名前>] [private yes|no] " -+" [bssid ] [name ] [private yes|no] " - "[hidden yes|no]\n" - "\n" --" wifi hotspot [ifname ] [con-name <名前>] [ssid ] [band a|bg] " --"[channel <チャネル>] [password <パスワード>]\n" -+" wifi hotspot [ifname ] [con-name ] [ssid ] [band a|bg] " -+"[channel ] [password ]\n" - "\n" --" wifi rescan [ifname ] [[ssid <スキャンする SSID>] ...]\n" -+" wifi rescan [ifname ] [[ssid ] ...]\n" - "\n" - " lldp [list [ifname ]]\n" - "\n" -@@ -3932,9 +3973,9 @@ msgid "" - "The command lists details for all devices, or for a given device.\n" - "\n" - msgstr "" --"使い方: nmcli device show { 引数 | help }\n" -+"使い方: nmcli device show { ARGUMENTS | help }\n" - "\n" --"引数 := []\n" -+"ARGUMENTS := []\n" - "\n" - "デバイスの詳細を表示します。\n" - "このコマンドですべてのデバイスまたは指定デバイスの詳細を表示させます。\n" -@@ -3953,9 +3994,9 @@ msgid "" - "It will also consider connections that are not set to auto-connect.\n" - "\n" - msgstr "" --"使い方: nmcli device connect { 引数 | help }\n" -+"使い方: nmcli device connect { ARGUMENTS | help }\n" - "\n" --"引数 := \n" -+"ARGUMENTS := \n" - "\n" - "デバイスを接続します。\n" - "NetworkManager により適した接続が検索され、アクティベートされます。\n" -@@ -3963,7 +4004,7 @@ msgstr "" - "\n" - - #: ../clients/cli/devices.c:356 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli device reapply { ARGUMENTS | help }\n" - "\n" -@@ -3973,16 +4014,16 @@ msgid "" - "made since it was last applied.\n" - "\n" - msgstr "" --"使い方: nmcli device reapply { 引数 | help }\n" -+"使い方: n nmcli device reapply { ARGUMENTS | help }\n" - "\n" --"引数 := ...\n" -+"ARGUMENTS := \n" - "\n" --"変更が最後に適用されてから現在アクティブな接続に対して行われた変更\n" --"でデバイスの更新を試行します。\n" -+"現在アクティブな接続に最後に適用されて以来の\n" -+"変更でデバイスの更新を試行します。\n" - "\n" - - #: ../clients/cli/devices.c:367 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli device modify { ARGUMENTS | --help }\n" - "\n" -@@ -4002,27 +4043,24 @@ msgid "" - "nmcli dev mod em1 -ipv4.dns 1\n" - "nmcli dev mod em1 -ipv6.addr \"abbe::cafe/56\"\n" - msgstr "" --"使い方: nmcli connection modify { ARGUMENTS | help }\n" -+"使い方: nmcli device modify { ARGUMENTS | --help }\n" - "\n" --"ARGUMENTS := [id | uuid | path] ([+|-]. )+\n" -+"ARGUMENTS := ([+|-]. )+\n" - "\n" --"接続プロファイルの 1 つ以上のプロパティーを変更します。\n" --"プロファイルは名前、UUID、または D-Bus パスで識別されます。複数の値から成るプ" --"ロパティーの場合は、\n" -+"接続プロファイルを編集せずに、現在アクティブなデバイス上の 1 つ以上のプロパ" -+"ティーを変更します。\n" -+"変更はすぐに反映されます。\n" -+"複数の値で構成されるプロパティーの場合は、\n" - "プロパティー名にオプションの '+' または '-' プレフィックスを使用できます。\n" - "'+' 記号を使用すると、値全体を上書きせずにアイテムを追加できます。\n" --"'-' 記号を使用すると、値全体の代わりに、選択されたアイテムを削除できます。\n" -+"'-' 記号を使用すると、値全体ではなく、選択されたアイテムを削除できます。\n" - "\n" - "例:\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, " -+"nmcli dev mod em1 ipv4.method manual ipv4.addr \"192.168.1.2/24, " - "10.10.1.5/8\"\n" --"nmcli con mod em1-1 +ipv4.dns 8.8.4.4\n" --"nmcli con mod em1-1 -ipv4.dns 1\n" --"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 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" - - #: ../clients/cli/devices.c:387 - #, c-format -@@ -4036,9 +4074,9 @@ msgid "" - "further connections without user/manual intervention.\n" - "\n" - msgstr "" --"使い方: nmcli device disconnect { 引数 | help }\n" -+"使い方: nmcli device disconnect { ARGUMENTS | help }\n" - "\n" --"引数 := ...\n" -+"ARGUMENTS := ...\n" - "\n" - "デバイスの接続を切断します。\n" - "このコマンドにより、デバイスの接続が切断され、ユーザーまたは手作業による介入" -@@ -4059,9 +4097,9 @@ msgid "" - "command.\n" - "\n" - msgstr "" --"使い方: nmcli device delete { 引数 | help }\n" -+"使い方: nmcli device delete { ARGUMENTS | help }\n" - "\n" --"引数 := ...\n" -+"ARGUMENTS := ...\n" - "\n" - "ソフトウェアデバイスを削除します。\n" - "このコマンドにより、インターフェースが削除されます。ソフトウェアデバイス\n" -@@ -4082,11 +4120,11 @@ msgid "" - "Modify device properties.\n" - "\n" - msgstr "" --"使い方: nmcli device set { 引数 | help }\n" -+"使い方: nmcli device set { ARGUMENTS | help }\n" - "\n" --"引数 := デバイス { プロパティー [ プロパティー ... ] }\n" --"デバイス := [ifname] \n" --"プロパティー := { autoconnect { yes | no } |\n" -+"ARGUMENTS := DEVICE { PROPERTY [ PROPERTY ... ] }\n" -+"DEVICE := [ifname] \n" -+"PROPERTY := { autoconnect { yes | no } |\n" - " { managed { yes | no }\n" - "\n" - "デバイスプロパティーを変更します。\n" -@@ -4104,9 +4142,9 @@ msgid "" - "Monitors all devices in case no interface is specified.\n" - "\n" - msgstr "" --"使い方: nmcli device monitor { 引数 | help }\n" -+"使い方: nmcli device monitor { ARGUMENTS | help }\n" - "\n" --"引数 := [] ...\n" -+"ARGUMENTS := [] ...\n" - "\n" - "デバイスアクティビティーを監視します。\n" - "このコマンドにより、指定されたデバイスの状態が変わるたびに行が出力されま" -@@ -4115,7 +4153,7 @@ msgstr "" - "\n" - - #: ../clients/cli/devices.c:437 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli device wifi { ARGUMENTS | help }\n" - "\n" -@@ -4166,20 +4204,20 @@ msgid "" - "use 'nmcli device wifi list' for that.\n" - "\n" - msgstr "" --"使い方: nmcli device wifi { 引数 | help }\n" -+"使い方: nmcli device wifi { ARGUMENTS | help }\n" - "\n" --"Wi-Fi デバイス上での操作を行います。\n" -+"Wi-Fi デバイス上で演算を実行します。\n" - "\n" --"引数 := [list [ifname ] [bssid ]]\n" -+"ARGUMENTS := [list [ifname ] [bssid ]]\n" - "\n" - "使用可能な Wi-Fi アクセスポイントを一覧表示します。'ifname' オプションと " - "'bssid' オプションを使用すると、\n" - "特定のインターフェース用の AP または特定の BSSID を持つ AP を一覧表示すること" - "ができます。\n" - "\n" --"引数 := connect <(B)SSID> [password <パスワード>] [wep-key-type key|phrase] " --"[ifname ]\n" --" [bssid ] [name <名前>] [private yes|no] [hidden " -+"ARGUMENTS := connect <(B)SSID> [password ] [wep-key-type key|" -+"phrase] [ifname ]\n" -+" [bssid ] [name ] [private yes|no] [hidden " - "yes|no]\n" - "\n" - "SSID または BSSID で指定した Wi-Fi ネットワークへ接続します。このコマンドによ" -@@ -4188,21 +4226,23 @@ msgstr "" - "クライアントで SSID をクリックした場合と同じ動作になります。常に新規の接続" - "が\n" - "作成されるため、主に新規の Wi-Fi ネットワークに接続する場合に役に立ちます。\n" --"ネットワーク用の接続がすでに存在する場合は、「nmcli con up id <名前>」を使っ" -+"ネットワーク用の接続がすでに存在する場合は、「nmcli con up id 」を使っ" - "て\n" - "既存のプロファイルを有効にすることが推奨されます。現時点でサポートされている" - "のはオープンな\n" - "WEP ネットワークおよび WPA-PSK ネットワークのみであることに注意してくださ" - "い。また、\n" --"IP 設定は DHCP で取得されるとみなされます。\n" -+"IP 設定は DHCP で取得されることが前提となります。\n" - "\n" - "ARGUMENTS := wifi hotspot [ifname ] [con-name ] [ssid ]\n" - " [band a|bg] [channel ] [password " - "]\n" - "\n" --"Create a Wi-Fi hotspot. Use 'connection down' or 'device disconnect'\n" --"to stop the hotspot.\n" --"Parameters of the hotspot can be influenced by the optional parameters:\n" -+"Wi-Fi ホットスポットを作成します。'connection down' または 'device " -+"disconnect'\n" -+"を使ってホットスポットを停止します。\n" -+"ホットスポットのパラメーターは以下のオプションのパラメーターに影響を受けま" -+"す:\n" - "ifname - Wi-Fi device to use\n" - "con-name - name of the created hotspot connection profile\n" - "ssid - SSID of the hotspot\n" -@@ -4212,15 +4252,16 @@ msgstr "" - "\n" - "ARGUMENTS := rescan [ifname ] [[ssid ] ...]\n" - "\n" --"Request that NetworkManager immediately re-scan for available access " --"points.\n" --"NetworkManager scans Wi-Fi networks periodically, but in some cases it " --"might\n" --"be useful to start scanning manually. 'ssid' allows scanning for a specific\n" --"SSID, which is useful for APs with hidden SSIDs. More 'ssid' parameters can " --"be\n" --"given. Note that this command does not show the APs,\n" --"use 'nmcli device wifi list' for that.\n" -+"NetworkManager が直ちに利用可能なアクセスポイントを再スキャンすることをリクエ" -+"ストします。\n" -+"\n" -+"NetworkManager は定期的に Wi-Fi ネットワークをスキャンしますが、\n" -+"スキャンを手動で開始することが便利な場合もあります。'ssid' を使用すると特定" -+"の\n" -+"SSID をスキャンすることができ、非表示 SSID の AP で便利です。複数の 'ssid' パ" -+"ラメーターを使用することが可能です\n" -+"このコマンドは AP を表示せず、\n" -+"それには 'nmcli device wifi list' を使用することに留意してください。\n" - "\n" - - #: ../clients/cli/devices.c:484 -@@ -4235,9 +4276,9 @@ msgid "" - "used to list neighbors for a particular interface.\n" - "\n" - msgstr "" --"使い方: nmcli device lldp { 引数 | help }\n" -+"使い方: nmcli device lldp { ARGUMENTS | help }\n" - "\n" --"引数 := [list [ifname ]]\n" -+"ARGUMENTS := [list [ifname ]]\n" - "\n" - "LLDP を介して検出された近接デバイスを一覧表示します。'ifname' オプションを使" - "用すると、\n" -@@ -4265,14 +4306,13 @@ msgid "Error: not all devices found." - msgstr "エラー: 一部のデバイスが見つかりません。" - - #: ../clients/cli/devices.c:641 --#, fuzzy - msgid "No interface specified" --msgstr "エラー: インターフェースが指定されていません。" -+msgstr "インターフェースが指定されていません" - - #: ../clients/cli/devices.c:660 --#, fuzzy, c-format -+#, c-format - msgid "Device '%s' not found" --msgstr "エラー: デバイス'%s' が見つかりません" -+msgstr "デバイス'%s' が見つかりません" - - #: ../clients/cli/devices.c:746 ../clients/cli/devices.c:898 - msgid "(none)" -@@ -4429,9 +4469,9 @@ msgid "Device '%s' successfully removed.\n" - msgstr "デバイス '%s' が正常に削除されました。\n" - - #: ../clients/cli/devices.c:1980 ../clients/cli/devices.c:2050 --#, fuzzy, c-format -+#, c-format - msgid "Error: Reapplying connection to device '%s' (%s) failed: %s" --msgstr "エラー: デバイス '%s' (%s) への接続の再適用に失敗しました: %s\n" -+msgstr "エラー: デバイス '%s' (%s) への接続の再適用に失敗しました: %s" - - #: ../clients/cli/devices.c:1990 ../clients/cli/devices.c:2059 - #, c-format -@@ -4439,9 +4479,10 @@ msgid "Connection successfully reapplied to device '%s'.\n" - msgstr "接続がデバイス '%s' に正常に再適用されました。\n" - - #: ../clients/cli/devices.c:2084 --#, fuzzy, c-format -+#, c-format - msgid "Error: Reading applied connection from device '%s' (%s) failed: %s" --msgstr "エラー: デバイス '%s' (%s) への接続の再適用に失敗しました: %s\n" -+msgstr "" -+"エラー: デバイス '%s' (%s) からの適用済み接続の読み取りに失敗しました: %s" - - #: ../clients/cli/devices.c:2148 - #, c-format -@@ -5185,71 +5226,61 @@ msgid "Networkmanager is now in the '%s' state\n" - msgstr "Networkmanager の状態は '%s' です\n" - - #: ../clients/cli/general.c:1103 --#, fuzzy - msgid "connection available" --msgstr "接続に失敗" -+msgstr "接続が利用可能" - - #: ../clients/cli/general.c:1105 --#, fuzzy - msgid "connections available" --msgstr "接続に失敗" -+msgstr "接続が利用可能" - - #: ../clients/cli/general.c:1123 --#, fuzzy - msgid "autoconnect" --msgstr "接続済み" -+msgstr "自動接続" - - #: ../clients/cli/general.c:1125 --#, fuzzy - msgid "fw missing" --msgstr "データがありません" -+msgstr "fw がありません" - - #: ../clients/cli/general.c:1130 --#, fuzzy - msgid "plugin missing" --msgstr "データがありません" -+msgstr "プラグインがありません" - - #: ../clients/cli/general.c:1135 - msgid "sw" --msgstr "" -+msgstr "sw" - - #: ../clients/cli/general.c:1137 --#, fuzzy - msgid "hw" --msgstr "表示する" -+msgstr "hw" - - #: ../clients/cli/general.c:1142 - msgid "iface" --msgstr "" -+msgstr "iface" - - #: ../clients/cli/general.c:1145 --#, fuzzy - msgid "port" --msgstr "ポータル" -+msgstr "ポート" - - #: ../clients/cli/general.c:1148 - msgid "mtu" --msgstr "" -+msgstr "mtu" - - #: ../clients/cli/general.c:1165 --#, fuzzy - msgid "master" --msgstr "マスター: " -+msgstr "マスター" - - #: ../clients/cli/general.c:1171 --#, fuzzy - msgid "ip4 default" --msgstr "デフォルト" -+msgstr "ip4 デフォルト" - - #: ../clients/cli/general.c:1173 --#, fuzzy - msgid "ip6 default" --msgstr "デフォルト" -+msgstr "ip6 デフォルト" - - #: ../clients/cli/general.c:1253 --#, fuzzy, c-format -+#, c-format - msgid "%s VPN connection" --msgstr "VPN 接続" -+msgstr "%s VPN 接続" - - #: ../clients/cli/general.c:1323 - #, c-format -@@ -5261,6 +5292,13 @@ msgid "" - "Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage " - "details.\n" - msgstr "" -+"既知のデバイスに関する情報を取得するには、\"nmcli device show\" を使用しま" -+"す。\n" -+"アクティブな接続プロファイルの概要を取得するには、\"nmcli connection show\" " -+"を使用します。\n" -+"\n" -+"使用方法の詳細情報については、nmcli(1) と nmcli-examples(5) の man ページを参" -+"照してください。\n" - - #: ../clients/cli/general.c:1344 - #, c-format -@@ -5272,7 +5310,7 @@ msgid "Networkmanager is not running (waiting for it)\n" - msgstr "Networkmanager が実行されていません (待機中)\n" - - #: ../clients/cli/nmcli.c:171 --#, fuzzy, c-format -+#, c-format - msgid "" - "Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }\n" - "\n" -@@ -5304,35 +5342,34 @@ msgid "" - " m[onitor] monitor NetworkManager changes\n" - "\n" - msgstr "" --"使い方: %s [オプション] オブジェクト { コマンド | help }\n" -+"使い方: nmcli [OPTIONS] OBJECT { COMMAND | help }\n" - "\n" --"オプション\n" --" -t[erse] 簡潔な出力\n" --" -p[retty] 人間が読みやすい出力\n" --" -m[ode] tabular|multiline 出力モード\n" --" -c[olors] auto|yes|no 出力で色を使用するかどうか\n" --" -f[ields] |all|common 出力フィールドの指定\n" --" -e[scape] yes|no 値内のコラムセパレーターをエス" --"ケープ\n" --" -n[ocheck] nmcli および NetworkManager の" --"バージョンをチェックしない\n" --" -a[sk] 足りないパラメーターを問い合わせ" --"る\n" --" -s[how-secrets] パスワードの表示を許可\n" --" -w[ait] 動作の完了を待機する場合のタイム" --"アウトを設定\n" --" -v[ersion] プログラムバージョンを表示\n" --" -h[elp] このヘルプを出力\n" --"\n" --"オブジェクト\n" --" g[eneral] NetworkManager の全般的な状態と動作\n" --" n[etworking] 全体的なネットワーク制御\n" --" r[adio] NetworkManager ラジオスイッチ\n" --" c[onnection] NetworkManager の接続\n" --" d[evice] NetworkManager で管理しているデバイス\n" --" a[gent] NetworkManager シークレットエージェントまたは polkit エー" --"ジェント\n" --" m[onitor] NetworkManager の変更を監視\n" -+"OPTIONS\n" -+" -t[erse] terse output\n" -+" -p[retty] pretty output\n" -+" -m[ode] tabular|multiline output mode\n" -+" -c[olors] auto|yes|no whether to use colors in " -+"output\n" -+" -f[ields] |all|common specify fields to output\n" -+" -g[et-values] |all|common shortcut for -m tabular -t -" -+"f\n" -+" -e[scape] yes|no escape columns separators " -+"in values\n" -+" -a[sk] ask for missing parameters\n" -+" -s[how-secrets] allow displaying passwords\n" -+" -w[ait] set timeout waiting for " -+"finishing operations\n" -+" -v[ersion] show program version\n" -+" -h[elp] print this help\n" -+"\n" -+"OBJECT\n" -+" g[eneral] NetworkManager's general status and operations\n" -+" n[etworking] overall networking control\n" -+" r[adio] NetworkManager radio switches\n" -+" c[onnection] NetworkManager's connections\n" -+" d[evice] devices managed by NetworkManager\n" -+" a[gent] NetworkManager secret agent or polkit agent\n" -+" m[onitor] monitor NetworkManager changes\n" - "\n" - - #: ../clients/cli/nmcli.c:249 -@@ -5388,11 +5425,9 @@ msgid "Error: Option '%s' is unknown, try 'nmcli -help'." - msgstr "エラー: オプション '%s' は不明です、'nmcli -help' を確認してください。" - - #: ../clients/cli/nmcli.c:433 ../clients/cli/nmcli.c:440 --#, fuzzy, c-format -+#, c-format - msgid "Error: nmcli terminated by signal %s (%d)\n" --msgstr "" --"\n" --"Error: nmcli がシグナル %s (%d) で終了しました\n" -+msgstr "Error: nmcli がシグナル %s (%d) で終了しました\n" - - #: ../clients/cli/nmcli.c:538 - msgid "Success" -@@ -5712,9 +5747,9 @@ msgstr "" - " ab 4 55 0xa6 ea 3a 74 C2\n" - - #: ../clients/cli/settings.c:2243 --#, fuzzy, c-format -+#, c-format - msgid "invalid option '%s', use a combination of [%s]" --msgstr "無効なオプション '%s' です。[%s] のいずれかを使用してください" -+msgstr "無効なオプション '%s' です。[%s] の組み合わせを使用してください" - - #: ../clients/cli/settings.c:2411 - #, c-format -@@ -5748,9 +5783,9 @@ msgstr "" - "例: mode=2,miimon=120\n" - - #: ../clients/cli/settings.c:2486 --#, fuzzy, c-format -+#, c-format - msgid "%d (forever)" --msgstr "%d (no)" -+msgstr "%d (forever)" - - #. Don't allow setting type unless the connection is brand new. - #. * Just because it's a bad idea and the user wouldn't probably want that. -@@ -5760,9 +5795,9 @@ msgstr "%d (no)" - #. * nmc_setting_set_property() is called only after the property - #. * we're setting (type) has been removed. - #: ../clients/cli/settings.c:2542 --#, fuzzy, c-format -+#, c-format - msgid "Can not change the connection type" --msgstr "不明な/未処理の Bluetooth 接続タイプ" -+msgstr "接続タイプを変更できません" - - #: ../clients/cli/settings.c:2566 ../libnm-core/nm-setting-connection.c:887 - #: ../libnm-util/nm-setting-connection.c:791 -@@ -6121,9 +6156,9 @@ msgid "'%s' is not a valid channel; use <1-13>" - msgstr "'%s' は有効なチャンネルではありません; <1-13> を使用してください" - - #: ../clients/cli/settings.c:4563 --#, fuzzy, c-format -+#, c-format - msgid "invalid method '%s', use one of %s" --msgstr "無効なモード '%s' です。%s のいずれかを使用してください" -+msgstr "無効なメソッド '%s' です。%s のいずれかを使用してください" - - #: ../clients/cli/settings.c:4628 - #, c-format -@@ -6462,20 +6497,18 @@ msgid "Wired 802.1X authentication" - msgstr "有線 802.1X の認証" - - #: ../clients/common/nm-secret-agent-simple.c:475 --#, fuzzy, c-format -+#, c-format - msgid "Secrets are required to access the wired network '%s'" --msgstr "" --"ワイヤレスネットワーク '%s' へのアクセスにはパスワードまたは暗号キーが必要で" --"す。" -+msgstr "有線ネットワーク '%s' へのアクセスにはシークレットが必要です" - - #: ../clients/common/nm-secret-agent-simple.c:480 - msgid "DSL authentication" - msgstr "DSL 認証" - - #: ../clients/common/nm-secret-agent-simple.c:481 --#, fuzzy, c-format -+#, c-format - msgid "Secrets are required for the DSL connection '%s'" --msgstr "タイプ '%s' の接続には設定が必要です" -+msgstr "DSL 接続 '%s' にはシークレットが必要です" - - #: ../clients/common/nm-secret-agent-simple.c:489 - msgid "PIN code required" -@@ -6506,50 +6539,50 @@ msgstr "'%s' への接続にはパスワードが必要です。" - #: ../clients/common/nm-secret-agent-simple.c:515 - #, c-format - msgid "Secrets are required to access the MACsec network '%s'" --msgstr "" -+msgstr "MACsec ネットワーク '%s' へのアクセスにはシークレットが必要です" - - #: ../clients/common/nm-secret-agent-simple.c:519 - msgid "MACsec PSK authentication" --msgstr "" -+msgstr "MACsec PSK 認証" - - #: ../clients/common/nm-secret-agent-simple.c:528 - msgid "MACsec EAP authentication" --msgstr "" -+msgstr "MACsec EAP 認証" - - #: ../clients/common/nm-secret-agent-simple.c:568 - msgid "VPN password required" --msgstr "PIN パスワードが必要です" -+msgstr "VPN パスワードが必要です" - - #: ../clients/common/nm-vpn-helpers.c:48 --#, fuzzy, c-format -+#, c-format - msgid "unknown VPN plugin \"%s\"" --msgstr "プラグイン %s をロードできません" -+msgstr "不明な VPNプラグイン '%s'" - - #: ../clients/common/nm-vpn-helpers.c:59 --#, fuzzy, c-format -+#, c-format - msgid "cannot load legacy-only VPN plugin \"%s\" for \"%s\"" --msgstr "プラグイン %s をロードできません" -+msgstr "'%s' 向けレガシー専用 VPN プラグイン '%s' を読み込めません" - - #: ../clients/common/nm-vpn-helpers.c:64 --#, fuzzy, c-format -+#, c-format - msgid "" - "cannot load VPN plugin \"%s\" due to missing \"%s\". Missing client plugin?" --msgstr "'%s' で VPN プラグインをロードできません: 不明なプラグイン名" -+msgstr "" -+"'%s' がないため VPN プラグイン '%s' を読み込めません。クライアントプラグイン" -+"がありませんか?" - - #: ../clients/common/nm-vpn-helpers.c:69 --#, fuzzy, c-format -+#, c-format - msgid "failed to load VPN plugin \"%s\": %s" --msgstr "エラー: VPN プラグインのロードに失敗しました: %s。" -+msgstr "VPN プラグイン '%s' の読み込みに失敗しました: %s" - - #: ../clients/common/nm-vpn-helpers.c:121 --#, fuzzy - msgid "Certificate password" --msgstr "プライベートキーのパスワード" -+msgstr "証明書のパスワード" - - #: ../clients/common/nm-vpn-helpers.c:122 --#, fuzzy - msgid "HTTP proxy password" --msgstr "グループパスワード" -+msgstr "HTTP プロキシのパスワード" - - #: ../clients/common/nm-vpn-helpers.c:125 - #: ../clients/common/nm-vpn-helpers.c:128 -@@ -6574,14 +6607,14 @@ msgid "Connecting" - msgstr "接続中" - - #: ../clients/nm-online.c:189 --#, fuzzy, c-format -+#, c-format - msgid "Error: timeout creating NMClient object\n" --msgstr "エラー: NMClient オブジェクトを作成できませんでした: %s。" -+msgstr "エラー: NMClient オブジェクトの作成でタイムアウト\n" - - #: ../clients/nm-online.c:209 --#, fuzzy, c-format -+#, c-format - msgid "Error: Could not create NMClient object: %s\n" --msgstr "エラー: NMClient オブジェクトを作成できませんでした: %s。" -+msgstr "エラー: NMClient オブジェクトを作成できませんでした: %s\n" - - #: ../clients/nm-online.c:235 - msgid "" -@@ -6740,14 +6773,13 @@ msgid "VLAN connection %d" - msgstr "VLAN 接続 %d" - - #: ../clients/tui/nm-editor-utils.c:225 ../clients/tui/nmt-page-ip-tunnel.c:136 --#, fuzzy - msgid "IP tunnel" - msgstr "IP トンネル" - - #: ../clients/tui/nm-editor-utils.c:229 --#, fuzzy, c-format -+#, c-format - msgid "IP tunnel connection %d" --msgstr "IP トンネル接続" -+msgstr "IP トンネル接続 %d" - - #: ../clients/tui/nm-editor-utils.c:244 - #, c-format -@@ -6792,7 +6824,6 @@ msgid "Could not create editor for invalid connection '%s'." - msgstr "無効な接続 '%s' のエディタを作成できませんでした。" - - #: ../clients/tui/nmt-editor.c:112 --#, fuzzy - msgid "Edit Connection" - msgstr "接続の編集" - -@@ -7061,39 +7092,39 @@ msgstr "この接続には IPv6 アドレス設定が必要になります" - #. The order must match the NM_IP_TUNNEL_MODE_* enum - #: ../clients/tui/nmt-page-ip-tunnel.c:78 - msgid "IPIP" --msgstr "" -+msgstr "IPIP" - - #: ../clients/tui/nmt-page-ip-tunnel.c:79 - msgid "GRE" --msgstr "" -+msgstr "GRE" - - #: ../clients/tui/nmt-page-ip-tunnel.c:80 - msgid "SIT" --msgstr "" -+msgstr "SIT" - - #: ../clients/tui/nmt-page-ip-tunnel.c:81 - msgid "ISATAP" --msgstr "" -+msgstr "ISATAP" - - #: ../clients/tui/nmt-page-ip-tunnel.c:82 - msgid "VTI" --msgstr "" -+msgstr "VTI" - - #: ../clients/tui/nmt-page-ip-tunnel.c:83 - msgid "IP6IP6" --msgstr "" -+msgstr "IP6IP6" - - #: ../clients/tui/nmt-page-ip-tunnel.c:84 - msgid "IPIP6" --msgstr "" -+msgstr "IPIP6" - - #: ../clients/tui/nmt-page-ip-tunnel.c:85 - msgid "IP6GRE" --msgstr "" -+msgstr "IP6GRE" - - #: ../clients/tui/nmt-page-ip-tunnel.c:86 - msgid "VTI6" --msgstr "" -+msgstr "VTI6" - - #: ../clients/tui/nmt-page-ip-tunnel.c:150 ../clients/tui/nmt-page-vlan.c:99 - msgid "Parent" -@@ -7101,20 +7132,19 @@ msgstr "親" - - #: ../clients/tui/nmt-page-ip-tunnel.c:157 - msgid "Local IP" --msgstr "" -+msgstr "ローカル IP" - - #: ../clients/tui/nmt-page-ip-tunnel.c:163 --#, fuzzy - msgid "Remote IP" --msgstr "リモート: " -+msgstr "リモート IP" - - #: ../clients/tui/nmt-page-ip-tunnel.c:169 - msgid "Input key" --msgstr "" -+msgstr "入力キー" - - #: ../clients/tui/nmt-page-ip-tunnel.c:176 - msgid "Output key" --msgstr "" -+msgstr "出力キー" - - #: ../clients/tui/nmt-page-ppp.c:131 - msgid "PPP CONFIGURATION" -@@ -7392,7 +7422,7 @@ msgstr "終了" - - #: ../clients/tui/nmtui-connect.c:416 ../clients/tui/nmtui-edit.c:120 - msgid "Back" --msgstr "" -+msgstr "戻る" - - #: ../clients/tui/nmtui-connect.c:439 - #, c-format -@@ -7965,7 +7995,7 @@ msgstr "無効なキー/証明書値パス \"%s\"" - #: ../libnm-core/nm-keyfile-reader.c:1030 - #, c-format - msgid "invalid PKCS#11 URI \"%s\"" --msgstr "" -+msgstr "無効な PKCS#11 URI \"%s\"" - - #: ../libnm-core/nm-keyfile-reader.c:1068 - msgid "invalid key/cert value data:;base64, is not base64" -@@ -7989,9 +8019,9 @@ msgid "invalid parity value '%s'" - msgstr "無効なパリティー値 '%s'" - - #: ../libnm-core/nm-keyfile-reader.c:1298 --#, fuzzy, c-format -+#, c-format - msgid "ignoring invalid team configuration: %s" --msgstr "無効な %s ルートを無視: %s" -+msgstr "無効な team 設定を無視: %s" - - #: ../libnm-core/nm-keyfile-reader.c:1504 - #, c-format -@@ -8037,19 +8067,16 @@ msgid "binary data missing" - msgstr "バイナリーデータがありません" - - #: ../libnm-core/nm-setting-8021x.c:500 --#, fuzzy - msgid "URI not NUL terminated" --msgstr "file:// URI が NUL で終了していません" -+msgstr "URI が NUL でないため終了しました" - - #: ../libnm-core/nm-setting-8021x.c:509 --#, fuzzy - msgid "URI is empty" --msgstr "file:// URI が空です" -+msgstr "URI が空です" - - #: ../libnm-core/nm-setting-8021x.c:517 --#, fuzzy - msgid "URI is not valid UTF-8" --msgstr "file:// URI が有効な UTF-8 ではありません" -+msgstr "URI が有効な UTF-8 ではありません" - - #: ../libnm-core/nm-setting-8021x.c:753 ../libnm-util/nm-setting-8021x.c:639 - msgid "CA certificate must be in X.509 format" -@@ -8120,7 +8147,7 @@ msgstr "証明書が無効です: %s" - #: ../libnm-core/nm-setting-8021x.c:3198 - #, c-format - msgid "password is not supported when certificate is not on a PKCS#11 token" --msgstr "" -+msgstr "証明書が PKCS#11 トークンにない場合は、パスワードはサポートされません" - - #: ../libnm-core/nm-setting-8021x.c:3235 - #: ../libnm-core/nm-setting-bluetooth.c:129 -@@ -8178,9 +8205,8 @@ msgid "'%s' is not a valid value for the property" - msgstr "'%s' は有効なプロパティの値ではありません" - - #: ../libnm-core/nm-setting-8021x.c:3290 --#, fuzzy - msgid "invalid auth flags" --msgstr "無効なルート: %s" -+msgstr "無効な auth フラグ" - - #: ../libnm-core/nm-setting-bluetooth.c:168 - #, c-format -@@ -8213,9 +8239,9 @@ msgid "'%s=%s' is incompatible with '%s > 0'" - msgstr "'%s=%s' は '%s > 0' とは互換性がありません" - - #: ../libnm-core/nm-setting-bond.c:629 --#, fuzzy, c-format -+#, c-format - msgid "'%s' is not a valid for '%s' option: %s" --msgstr "'%s' は '%s' オプション用の有効な IPv4 アドレスではありません" -+msgstr "'%s' は '%s' オプションに無効です: %s" - - #: ../libnm-core/nm-setting-bond.c:640 ../libnm-util/nm-setting-bond.c:577 - #, c-format -@@ -8342,11 +8368,9 @@ msgstr "" - "'%s' に設定する必要があります" - - #: ../libnm-core/nm-setting-connection.c:1077 --#, fuzzy, c-format -+#, c-format - msgid "A slave connection with '%s' set to '%s' cannot have a '%s' setting" --msgstr "" --"'%s' が設定され、ポートタイプが '%s' のスレーブ接続を検出します。'%s' は " --"'%s' に設定する必要があります" -+msgstr "'%s' に設定されている '%s' とのスレーブ接続には、'%s' 設定ができません" - - #: ../libnm-core/nm-setting-dcb.c:522 ../libnm-util/nm-setting-dcb.c:594 - msgid "flags invalid" -@@ -8439,12 +8463,12 @@ msgid "Missing IPv6 address" - msgstr "不明な IPv6 アドレス" - - #: ../libnm-core/nm-setting-ip-config.c:138 --#, fuzzy, c-format -+#, c-format - msgid "Invalid IPv4 address '%s'" - msgstr "無効な IPv4 アドレス '%s'" - - #: ../libnm-core/nm-setting-ip-config.c:138 --#, fuzzy, c-format -+#, c-format - msgid "Invalid IPv6 address '%s'" - msgstr "無効な IPv6 アドレス '%s'" - -@@ -8464,41 +8488,40 @@ msgid "Invalid routing metric '%s'" - msgstr "無効なルーティングメトリック '%s'" - - #: ../libnm-core/nm-setting-ip-config.c:1260 --#, fuzzy - msgid "unknown attribute" --msgstr "不明な設定名" -+msgstr "不明な属性" - - #: ../libnm-core/nm-setting-ip-config.c:1270 --#, fuzzy, c-format -+#, c-format - msgid "invalid attribute type '%s'" --msgstr "無効なパリティー値 '%s'" -+msgstr "無効な属性タイプ '%s'" - - #: ../libnm-core/nm-setting-ip-config.c:1281 - #, c-format - msgid "attribute is not valid for a IPv4 route" --msgstr "" -+msgstr "属性は IPv4 ルートには無効です" - - #: ../libnm-core/nm-setting-ip-config.c:1282 - #, c-format - msgid "attribute is not valid for a IPv6 route" --msgstr "" -+msgstr "属性は IPv6 ルートには無効です" - - #: ../libnm-core/nm-setting-ip-config.c:1298 - #: ../libnm-core/nm-setting-ip-config.c:1322 --#, fuzzy, c-format -+#, c-format - msgid "'%s' is not a valid IPv4 address" --msgstr "'%s' は有効な IP アドレスではありません" -+msgstr "'%s' は有効な IPv4 アドレスではありません" - - #: ../libnm-core/nm-setting-ip-config.c:1299 - #: ../libnm-core/nm-setting-ip-config.c:1323 --#, fuzzy, c-format -+#, c-format - msgid "'%s' is not a valid IPv6 address" --msgstr "'%s' は有効な IP アドレスではありません" -+msgstr "'%s' は有効な IPv6 アドレスではありません" - - #: ../libnm-core/nm-setting-ip-config.c:1313 --#, fuzzy, c-format -+#, c-format - msgid "invalid prefix %s" --msgstr "無効なルート: %s" -+msgstr "無効なプレフィックス %s" - - #: ../libnm-core/nm-setting-ip-config.c:2429 - #, c-format -@@ -8539,9 +8562,9 @@ msgid "%d. route cannot be a default route" - msgstr "%d. ルートをデフォルトルートにすることはできません" - - #: ../libnm-core/nm-setting-ip-config.c:2523 --#, fuzzy, c-format -+#, c-format - msgid "a gateway is incompatible with '%s'" --msgstr "'%s=%s' は '%s > 0' とは互換性がありません" -+msgstr "ゲートウェイは '%s' と互換性がありません" - - #: ../libnm-core/nm-setting-ip4-config.c:143 - #: ../libnm-core/nm-setting-ip6-config.c:167 -@@ -8577,32 +8600,29 @@ msgid "property cannot be set when dhcp-hostname is also set" - msgstr "dhcp-hostname も設定されている場合は、プロパティーを設定できません" - - #: ../libnm-core/nm-setting-ip4-config.c:235 --#, fuzzy, c-format -+#, c-format - msgid "multiple addresses are not allowed for '%s=%s'" --msgstr "このプロパティは '%s=%s' には許可されていません" -+msgstr "'%s=%s' では複数のアドレスは許可されていません" - - #: ../libnm-core/nm-setting-ip4-config.c:249 --#, fuzzy - msgid "property should be TRUE when method is set to disabled" --msgstr "プロパティータイプは '%s' に設定する必要があります" -+msgstr "メソッドが無効に設定されている場合は、プロパティーは TRUE にします" - - #: ../libnm-core/nm-setting-ip6-config.c:241 --#, fuzzy - msgid "value is not a valid token" --msgstr "値 '%s' は有効な UUID ではありません" -+msgstr "値 は有効なトークンではありません" - - #: ../libnm-core/nm-setting-ip6-config.c:252 --#, fuzzy - msgid "only makes sense with EUI64 address generation mode" --msgstr "IPv6 SLAAC アドレス生成モード" -+msgstr "EUI64 アドレス生成モードでのみ、意味が通じます" - - #: ../libnm-core/nm-setting-ip6-config.c:264 - msgid "token is not in canonical form" --msgstr "" -+msgstr "トークンが正規形式ではありません" - - #: ../libnm-core/nm-setting-ip6-config.c:276 - msgid "property should be TRUE when method is set to ignore" --msgstr "" -+msgstr "メソッドが ignore に設定されている場合は、プロパティーは TRUE にします" - - #: ../libnm-core/nm-setting-ip-tunnel.c:318 - #, c-format -@@ -8639,17 +8659,16 @@ msgstr "固定 TTL は、パス MTU 検出が有効な場合のみ許可され - - #: ../libnm-core/nm-setting-macsec.c:235 - msgid "the key is empty" --msgstr "" -+msgstr "キーが空です" - - #: ../libnm-core/nm-setting-macsec.c:246 - #, c-format - msgid "the key must be %d characters" --msgstr "" -+msgstr "キーは %d 文字にする必要があります" - - #: ../libnm-core/nm-setting-macsec.c:254 --#, fuzzy - msgid "the key contains non-hexadecimal characters" --msgstr "IV は 16進法でない数字を含んでいます。" -+msgstr "キーは 16進法でない文字が含まれています" - - #: ../libnm-core/nm-setting-macsec.c:291 ../libnm-core/nm-setting-vlan.c:634 - #: ../libnm-util/nm-setting-vlan.c:556 -@@ -8666,12 +8685,12 @@ msgstr "プロパティ、'%s:%s' いずれも指定されていません" - #: ../libnm-core/nm-setting-macsec.c:333 - #, c-format - msgid "EAP key management requires '%s' setting presence" --msgstr "" -+msgstr "EAP キー管理には '%s' 設定が必要です" - - #: ../libnm-core/nm-setting-macsec.c:344 - #, c-format - msgid "invalid port %d" --msgstr "" -+msgstr "無効なポート %d" - - #: ../libnm-core/nm-setting-macvlan.c:192 - msgid "non promiscuous operation is allowed only in passthru mode" -@@ -8703,34 +8722,34 @@ msgid "setting this property requires non-zero '%s' property" - msgstr "このプロパティを設定するにはゼロ以外の '%s' プロパティが必要です" - - #: ../libnm-core/nm-setting-proxy.c:163 --#, fuzzy, c-format -+#, c-format - msgid "invalid proxy method" --msgstr "無効な優先度マップ '%s'" -+msgstr "無効なプロキシメソッド" - - #: ../libnm-core/nm-setting-proxy.c:173 ../libnm-core/nm-setting-proxy.c:182 --#, fuzzy, c-format -+#, c-format - msgid "this property is not allowed for method none" --msgstr "このプロパティは '%s=%s' には許可されていません" -+msgstr "このプロパティはメソッド none には許可されていません" - - #: ../libnm-core/nm-setting-proxy.c:193 - #, c-format - msgid "the script is too large" --msgstr "" -+msgstr "スクリプトが長すぎます" - - #: ../libnm-core/nm-setting-proxy.c:201 --#, fuzzy, c-format -+#, c-format - msgid "the script is not valid utf8" --msgstr "インデックス '%s' は無効です" -+msgstr "スクリプトは有効な utf8 ではありません" - - #: ../libnm-core/nm-setting-proxy.c:209 - #, c-format - msgid "the script lacks FindProxyForURL function" --msgstr "" -+msgstr "スクリプトには FindProxyForURL 関数がありません" - - #: ../libnm-core/nm-setting-team.c:94 ../libnm-core/nm-setting-team-port.c:122 - #, c-format - msgid "team config exceeds size limit" --msgstr "" -+msgstr "team 設定が制限サイズを超えています" - - #: ../libnm-core/nm-setting-tun.c:187 - #, c-format -@@ -8748,66 +8767,59 @@ msgid "'%s': invalid group ID" - msgstr "'%s': 無効なグループ ID" - - #: ../libnm-core/nm-setting-user.c:111 --#, fuzzy - msgid "missing key" --msgstr "不明な設定" -+msgstr "キーがみつかりません" - - #: ../libnm-core/nm-setting-user.c:117 --#, fuzzy - msgid "key is too long" --msgstr "エラー: ssid が長すぎます。" -+msgstr "キーが長すぎます" - - #: ../libnm-core/nm-setting-user.c:122 --#, fuzzy - msgid "key must be UTF8" --msgstr "パスワードは UTF-8 である必要があります" -+msgstr "キーは UTF-8 である必要があります" - - #: ../libnm-core/nm-setting-user.c:145 - msgid "key requires a '.' for a namespace" --msgstr "" -+msgstr "キーはネームスペースに '.' が必要です" - - #: ../libnm-core/nm-setting-user.c:158 - msgid "key cannot contain \"..\"" --msgstr "" -+msgstr "キーに \"..\" を含めることはできません" - - #: ../libnm-core/nm-setting-user.c:163 --#, fuzzy - msgid "key contains invalid characters" --msgstr "IV は 16進法でない数字を含んでいます。" -+msgstr "キーに無効な文字が含まれています" - - #: ../libnm-core/nm-setting-user.c:188 --#, fuzzy - msgid "value is missing" --msgstr "エラー: %s 引数がありません。" -+msgstr "値がありません" - - #: ../libnm-core/nm-setting-user.c:195 --#, fuzzy - msgid "value is too large" --msgstr "シークレット値が空でした" -+msgstr "値が長すぎます" - - #: ../libnm-core/nm-setting-user.c:201 --#, fuzzy - msgid "value is not valid UTF8" --msgstr "file:// URI が有効な UTF-8 ではありません" -+msgstr "値が有効な UTF-8 ではありません" - - #: ../libnm-core/nm-setting-user.c:338 - msgid "maximum number of user data entries reached" --msgstr "" -+msgstr "ユーザーデータエントリーが最大数に達しました" - - #: ../libnm-core/nm-setting-user.c:379 --#, fuzzy, c-format -+#, c-format - msgid "invalid key \"%s\": %s" --msgstr "無効なルート: %s" -+msgstr "無効なキー '%s': %s" - - #: ../libnm-core/nm-setting-user.c:383 --#, fuzzy, c-format -+#, c-format - msgid "invalid value for \"%s\": %s" --msgstr "'%s' は有効な '%s' の値ではありません" -+msgstr "'%s' の無効な値: %s" - - #: ../libnm-core/nm-setting-user.c:398 - #, c-format - msgid "maximum number of user data entries reached (%u instead of %u)" --msgstr "" -+msgstr "ユーザーデータエントリーが最大数に達しました (%u ではなく %u)" - - #: ../libnm-core/nm-setting-vlan.c:670 ../libnm-util/nm-setting-vlan.c:600 - #, c-format -@@ -8820,7 +8832,7 @@ msgstr "フラグが無効です" - - #: ../libnm-core/nm-setting-vlan.c:691 - msgid "vlan setting should have a ethernet setting as well" --msgstr "" -+msgstr "vlan 設定にはイーサネット設定も必要です" - - #: ../libnm-core/nm-setting-vpn.c:460 - #, c-format -@@ -8865,9 +8877,9 @@ msgid "%d is greater than local port max %d" - msgstr "%d はローカルポートの最大 %d よりも大きいです" - - #: ../libnm-core/nm-setting-wired.c:632 ../libnm-util/nm-setting-wired.c:613 --#, fuzzy, c-format -+#, c-format - msgid "'%s' is not a valid Ethernet port value" --msgstr "'%s' は有効な Ethernet ポート値ではありません" -+msgstr "'%s' は有効なイーサネットポート値ではありません" - - #: ../libnm-core/nm-setting-wired.c:642 ../libnm-util/nm-setting-wired.c:623 - #, c-format -@@ -8889,16 +8901,15 @@ msgstr "Wake-on-LAN パスワードはマジックパケットモードでのみ - - #: ../libnm-core/nm-setting-wired.c:770 - msgid "when link autonegotiation is enabled no duplex value is accepted" --msgstr "" -+msgstr "リンク autonegotiation が有効になっていると、二重値は承認されません" - - #: ../libnm-core/nm-setting-wired.c:778 - msgid "when link autonegotiation is enabled speed should be 0" --msgstr "" -+msgstr "リンク autonegotiation が有効になっている場合は、スピードは 0 にします" - - #: ../libnm-core/nm-setting-wired.c:788 --#, fuzzy - msgid "both speed and duplex are required for static link configuration" --msgstr "VPN サービスは無効な設定を返しました" -+msgstr "スピードと二重の両方が静的リンク設定に必要です" - - #: ../libnm-core/nm-setting-wireless-security.c:882 - #: ../libnm-util/nm-setting-wireless-security.c:912 -@@ -8948,14 +8959,14 @@ msgid "'%s' requires setting '%s' property" - msgstr "'%s' の場合は '%s' プロパティーを設定する必要があります" - - #: ../libnm-core/nm-setting-wireless.c:883 --#, fuzzy, c-format -+#, c-format - msgid "invalid value" --msgstr "無効なキー/証明書値" -+msgstr "無効な値" - - #: ../libnm-core/nm-setting-wireless.c:904 - #, c-format - msgid "conflicting value of mac-address-randomization and cloned-mac-address" --msgstr "" -+msgstr "mac-address-randomization と cloned-mac-address の値の競合" - - #: ../libnm-core/nm-setting.c:838 - #, c-format -@@ -9001,9 +9012,9 @@ msgid "not a file (%s)" - msgstr "ファイルではありません (%s)" - - #: ../libnm-core/nm-utils.c:2464 --#, fuzzy, c-format -+#, c-format - msgid "invalid file owner %d for %s" --msgstr "'%s' は無効なフィールドです; 許可されているのは次のフィールドです: %s" -+msgstr "'%s' の無効なファイル所有者 %d" - - #: ../libnm-core/nm-utils.c:2475 - #, c-format -@@ -9041,94 +9052,91 @@ msgid "Could not find \"%s\" binary" - msgstr "\"%s\" バイナリーを見つけることができませんでした" - - #: ../libnm-core/nm-utils.c:3665 --#, fuzzy, c-format -+#, c-format - msgid "not a valid ethernet MAC address for mask at position %lld" --msgstr "'%s' は '%s' オプション用の有効な IPv4 アドレスではありません" -+msgstr "%lld の場所でマスク用に有効なイーサネット MAC アドレスではありません" - - #: ../libnm-core/nm-utils.c:3680 - #, c-format - msgid "not a valid ethernet MAC address #%u at position %lld" --msgstr "" -+msgstr "%lld の場所で有効なイーサネット MAC アドレス #%u ではありません" - - #: ../libnm-core/nm-utils.c:3714 --#, fuzzy - msgid "interface name is too short" --msgstr "インターフェース名 [*]: " -+msgstr "インターフェース名が短すぎます" - - #: ../libnm-core/nm-utils.c:3720 - msgid "interface name is longer than 15 characters" --msgstr "" -+msgstr "インターフェース名が 15 文字を超えています" - - #: ../libnm-core/nm-utils.c:3726 --#, fuzzy - msgid "interface name is reserved" --msgstr "インターフェース名と UUID が’必要です\n" -+msgstr "インターフェース名が予約されています" - - #: ../libnm-core/nm-utils.c:3733 - msgid "interface name contains an invalid character" --msgstr "" -+msgstr "インターフェース名に無効な文字が含まれています" - - #: ../libnm-core/nm-utils.c:4534 ../libnm-core/nm-utils.c:4668 - msgid "value is NULL" --msgstr "" -+msgstr "値が NULL です" - - #: ../libnm-core/nm-utils.c:4534 ../libnm-core/nm-utils.c:4668 --#, fuzzy - msgid "value is empty" --msgstr "シークレット値が空でした" -+msgstr "値が空です" - - #: ../libnm-core/nm-utils.c:4543 --#, fuzzy, c-format -+#, c-format - msgid "invalid JSON at position %d (%s)" --msgstr "無効なオプション '%s'" -+msgstr "%d (%s) で無効な JSON" - - #: ../libnm-core/nm-utils.c:4555 ../libnm-core/nm-utils.c:4687 - msgid "is not a JSON object" --msgstr "" -+msgstr "JSON オブジェクトではありません" - - #: ../libnm-core/nm-utils.c:4657 - msgid "not valid utf-8" --msgstr "" -+msgstr "utf-8 ではありません" - - #: ../libnm-core/nm-utils.c:4782 ../libnm-core/nm-utils.c:4800 - #, c-format - msgid "unterminated escape sequence" --msgstr "" -+msgstr "未終了のエスケープシーケンス" - - #: ../libnm-core/nm-utils.c:4810 - #, c-format - msgid "missing key-value separator '%c'" --msgstr "" -+msgstr "キー-値のセパレーター '%c' がありません" - - #: ../libnm-core/nm-utils.c:4827 --#, fuzzy, c-format -+#, c-format - msgid "unknown attribute '%s'" --msgstr "不明なデバイス '%s' です。" -+msgstr "不明な属性 '%s'" - - #: ../libnm-core/nm-utils.c:4837 --#, fuzzy, c-format -+#, c-format - msgid "invalid uint32 value '%s' for attribute '%s'" --msgstr "無効なオプション '%s'、またはその値 '%s' です" -+msgstr "属性 '%s' の無効な uint32 値 '%s'" - - #: ../libnm-core/nm-utils.c:4846 --#, fuzzy, c-format -+#, c-format - msgid "invalid uint8 value '%s' for attribute '%s'" --msgstr "無効なオプション '%s'、またはその値 '%s' です" -+msgstr "属性 '%s' の無効な uint8 値 '%s'" - - #: ../libnm-core/nm-utils.c:4859 --#, fuzzy, c-format -+#, c-format - msgid "invalid boolean value '%s' for attribute '%s'" --msgstr "無効なオプション '%s'、またはその値 '%s' です" -+msgstr "属性 '%s' の無効なブール値 '%s'" - - #: ../libnm-core/nm-utils.c:4867 - #, c-format - msgid "unsupported attribute '%s' of type '%s'" --msgstr "" -+msgstr "タイプ '%s' のサポートされていない属性 '%s'" - - #: ../libnm-core/nm-vpn-editor-plugin.c:296 --#, fuzzy, c-format -+#, c-format - msgid "cannot load plugin \"%s\": %s" --msgstr "プラグイン %s をロードできません" -+msgstr "プラグイン '%s' を読み込めません: %s" - - #: ../libnm-core/nm-vpn-editor-plugin.c:307 - #, c-format -@@ -9389,9 +9397,8 @@ msgid "" - msgstr "デバイスには接続に必要な Bluetooth 機能がありません。" - - #: ../libnm/nm-device-dummy.c:46 --#, fuzzy - msgid "The connection was not a dummy connection." --msgstr "接続はモデム接続ではありませんでした。" -+msgstr "接続はダミー接続ではありませんでした。" - - #: ../libnm/nm-device-dummy.c:53 ../libnm/nm-device-generic.c:97 - msgid "The connection did not specify an interface name." -@@ -9406,9 +9413,9 @@ msgid "The connection and device differ in S390 subchannels." - msgstr "接続とデバイスは S390 サブチャネルで異なります。" - - #: ../libnm/nm-device-ethernet.c:236 --#, fuzzy, c-format -+#, c-format - msgid "Invalid device MAC address %s." --msgstr "無効なデバイス MAC アドレスです。" -+msgstr "無効なデバイス MAC アドレス %s。" - - #: ../libnm/nm-device-ethernet.c:241 - msgid "The MACs of the device and the connection do not match." -@@ -9516,11 +9523,11 @@ msgstr "接続は WiMAX 接続ではありませんでした。" - - #: ../libnm/nm-device.c:1651 - msgid "MACsec" --msgstr "" -+msgstr "MACsec" - - #: ../libnm/nm-device.c:1653 - msgid "Dummy" --msgstr "" -+msgstr "ダミー" - - #: ../libnm/nm-device.c:2544 - #, c-format -@@ -9555,16 +9562,12 @@ msgstr "" - "れます" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:3 --#, fuzzy - msgid "Reload NetworkManager configuration" --msgstr "NetworkManager の設定を表示して終了する" -+msgstr "NetworkManager 設定をリロード" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:4 --#, fuzzy - msgid "System policy prevents reloading NetworkManager" --msgstr "" --"システムポリシーによりシステムのネットワーキングの有効化または無効化が阻止さ" --"れます" -+msgstr "システムポリシーにより NetworkManager のリロードが回避されます" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:5 - msgid "" -@@ -9674,23 +9677,21 @@ msgstr "システムポリシーにより永続的なグローバル DNS 設定 - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:27 - msgid "Perform a checkpoint or rollback of interfaces configuration" --msgstr "" -+msgstr "インターフェース設定のチェックポイントまたはロールバックを実行" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:28 --#, fuzzy - msgid "System policy prevents the creation of a checkpoint or its rollback" --msgstr "システムポリシーにより永続的なシステムのホスト名の修正が阻止されます" -+msgstr "" -+"システムポリシーによりチェックポイントまたはそのロールバックの作成が回避され" -+"ます" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:29 --#, fuzzy - msgid "Enable or disable device statistics" --msgstr "Wi-Fi デバイスを有効または無効にする" -+msgstr "デバイスの統計値を有効または無効にする" - - #: ../data/org.freedesktop.NetworkManager.policy.in.in.h:30 --#, fuzzy - msgid "System policy prevents enabling or disabling device statistics" --msgstr "" --"システムポリシーにより Wi-Fi デバイスの有効化または無効化が阻止されます" -+msgstr "システムポリシーによりデバイス統計値の有効化または無効化が阻止されます" - - #: ../shared/nm-utils/nm-shared-utils.c:312 - #, c-format -@@ -9913,9 +9914,8 @@ msgid "Bridge connection" - msgstr "ブリッジ接続" - - #: ../src/devices/nm-device-dummy.c:70 --#, fuzzy - msgid "Dummy connection" --msgstr "ADSL 接続" -+msgstr "ダミー接続" - - #: ../src/devices/nm-device-ethernet.c:1435 - msgid "PPPoE connection" -@@ -10173,9 +10173,8 @@ msgid "Connection UUID" - msgstr "接続 UUID" - - #: ../src/nm-iface-helper.c:293 --#, fuzzy - msgid "Connection Token for Stable IDs" --msgstr "接続プロファイルの詳細" -+msgstr "安定 ID の接続トークン" - - #: ../src/nm-iface-helper.c:294 - msgid "Whether to manage IPv6 SLAAC" -@@ -10281,16 +10280,3 @@ msgstr "不明なログレベル '%s'" - #, c-format - msgid "Unknown log domain '%s'" - msgstr "不明なログドメイン '%s'" -- --#, fuzzy --#~ msgid "unrecognized option '%s'" --#~ msgstr "無効なオプション '%s'" -- --#~ msgid "Option '--terse' requires specifying '--fields'" --#~ msgstr "オプション '--terse' には '--fields' の指定が必要です" -- --#~ msgid "" --#~ "Option '--terse' requires specific '--fields' option values , not '%s'" --#~ msgstr "" --#~ "オプション'--terse' には特定の '--fields' オプションの値が必要で、 '%s' で" --#~ "はありません" --- -2.13.0 - -From 82b97f68923936b4af74dc602fa2eb3ae1f9d0ac Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Mon, 29 May 2017 15:25:34 +0200 -Subject: [PATCH 1/2] po: add zanata.xml - ---- - zanata.xml | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - create mode 100644 zanata.xml - -diff --git a/zanata.xml b/zanata.xml -new file mode 100644 -index 0000000..644c06b ---- /dev/null -+++ b/zanata.xml -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ https://vendors.zanata.redhat.com/ -+ networkmanager -+ RHEL-7.4 -+ gettext -+ po -+ po -+ -+ --- -2.13.0 - diff --git a/SOURCES/0015-ifcfg-rh-legacy-netmask-rh1445414.patch b/SOURCES/0015-ifcfg-rh-legacy-netmask-rh1445414.patch deleted file mode 100644 index fa081b5..0000000 --- a/SOURCES/0015-ifcfg-rh-legacy-netmask-rh1445414.patch +++ /dev/null @@ -1,721 +0,0 @@ -From 3757404ab4d14fcd6e61b367c37308ef1e3dbc3a Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 25 May 2017 15:03:40 +0200 -Subject: [PATCH 1/5] ifcfg-rh: fix writing NETMASK in write_ip4_setting() - -(cherry picked from commit efd462d946ae3382975cd73f60f33185a2cf9542) -(cherry picked from commit 2bf3d590ceb99c9f7d0c5dfd3e031e69d14fa5b8) ---- - src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -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 400e9bd..c66af01 100644 ---- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c -+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c -@@ -2196,7 +2196,8 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) - char buf[INET_ADDRSTRLEN]; - - g_free (tmp); -- svSetValueStr (ifcfg, netmask_key, nm_utils_inet4_ntop (prefix, buf)); -+ svSetValueStr (ifcfg, netmask_key, -+ nm_utils_inet4_ntop (nm_utils_ip4_prefix_to_netmask (prefix), buf)); - } - - svUnsetValue (ifcfg, gw_key); --- -2.9.4 - - -From 37b96ee417fb9bb67a02c162f1dbe05fa4a9eb5f Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 25 May 2017 14:53:03 +0200 -Subject: [PATCH 2/5] ifcfg-rh: add svFindFirstKeyWithPrefix() function - -During backporting manually patched to use GList instead of CList. - -(cherry picked from commit e9d960740af008acb91074b31a570fba17dc0344) -(cherry picked from commit 3dfddc18a53601463da49451c05cc62869773e16) ---- - src/settings/plugins/ifcfg-rh/shvar.c | 22 ++++++++++++++++++++++ - src/settings/plugins/ifcfg-rh/shvar.h | 2 ++ - 2 files changed, 24 insertions(+) - -diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c -index 9fce5aa..47ad5a2 100644 ---- a/src/settings/plugins/ifcfg-rh/shvar.c -+++ b/src/settings/plugins/ifcfg-rh/shvar.c -@@ -905,6 +905,28 @@ svGetKeys (shvarFile *s) - - /*****************************************************************************/ - -+const char * -+svFindFirstKeyWithPrefix (shvarFile *s, const char *key_prefix) -+{ -+ const GList *current; -+ const shvarLine *l; -+ -+ g_return_val_if_fail (s, NULL); -+ g_return_val_if_fail (key_prefix, NULL); -+ -+ for (current = s->lineList; current; current = current->next) { -+ l = current->data; -+ if ( l->key -+ && l->line -+ && g_str_has_prefix (l->key, key_prefix)) -+ return l->key; -+ } -+ -+ return NULL; -+} -+ -+/*****************************************************************************/ -+ - static const char * - _svGetValue (shvarFile *s, const char *key, char **to_free) - { -diff --git a/src/settings/plugins/ifcfg-rh/shvar.h b/src/settings/plugins/ifcfg-rh/shvar.h -index 9d8c236..a13920a 100644 ---- a/src/settings/plugins/ifcfg-rh/shvar.h -+++ b/src/settings/plugins/ifcfg-rh/shvar.h -@@ -44,6 +44,8 @@ shvarFile *svCreateFile (const char *name); - /* Open the file , return shvarFile on success, NULL on failure */ - shvarFile *svOpenFile (const char *name, GError **error); - -+const char *svFindFirstKeyWithPrefix (shvarFile *s, const char *key_prefix); -+ - /* Get the value associated with the key, and leave the current pointer - * pointing at the line containing the value. The char* returned MUST - * be freed by the caller. --- -2.9.4 - - -From 9df20fdb815fd37f31fa488325bfc3803bfa5003 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 25 May 2017 14:07:28 +0200 -Subject: [PATCH 3/5] build: sort filenames in Makefile.am alphabetically - -(cherry picked from commit 371b761680d660ea61ae33e02916564a0c3acc02) -(cherry picked from commit 85aa450e947785dc2eab73a5b248345ce9662b5b) ---- - Makefile.am | 301 ++++++++++++++++++++++++++++++------------------------------ - 1 file changed, 151 insertions(+), 150 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 909847e..c543a21 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2003,154 +2003,153 @@ $(src_settings_plugins_ifcfg_rh_tests_test_ifcfg_rh_OBJECTS): $(libnm_core_lib_h - endif - - EXTRA_DIST += \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-a.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-b.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-wired-802-1X-subj-matches.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_User_1.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bond_Main.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bridge_Component.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Permissions.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Proxy_Basic.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Team_Port.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_VLAN_reorder_hdr.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Band_A.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Hidden.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_always.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_default.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_missing.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_never.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_LEAP.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_WEP_104_ASCII.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Auto-Negotiate.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection_2.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-eth-type \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-main \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-mode-numeric \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave-ib \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-component \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-missing-stp \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dns-options \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ibft \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-infiniband \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-minimal \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-misc-variables \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-variables-corner-cases-1 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-nm-controlled-unrecognized \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-bootproto \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-shared-plus-ip \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcpv6-hostname-fallback \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp6-only \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-autoip \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway-ignore \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway-ignore \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-obsolete-gateway-n \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-never-default \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-never-default \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no-gatewaydev-yes \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-defroute-no-gatewaydev-yes \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-peap-mschapv2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-8021x-peap-mschapv2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-agent \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-always \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-onboot-no \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-noip \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-onboot-no \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-permissions \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-read-proxy-basic \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-sit-ignore \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-invalid \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-unrecognized \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-variables-corner-cases-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-device \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-vlanid \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-physdev \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-trailing-spaces \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a-channel-mismatch \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-bg-channel-mismatch \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-dynamic-wep-leap \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-agent \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-always-ask \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-always \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-default \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-missing \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-never \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-auto \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-quoted \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-quoted \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-bad-hex \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-hex \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-hex \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-bad-hex \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-long-quoted \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-open-ssid-quoted \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-104-ascii \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-40-ascii \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-adhoc \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-adhoc \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-agent-keys \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-eap-ttls-chap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-eap-ttls-chap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-leap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-agent \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-leap-always-ask \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-no-keys \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-passphrase \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-tls \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-ttls-tls \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted2 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-adhoc \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-adhoc \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-hex \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-hex \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-tls \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-tls \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-eap-ttls-tls \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-ttls-tls \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-hidden \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-a-channel-mismatch \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-band-bg-channel-mismatch \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-always \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-never \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-default \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-mac-random-missing \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/test_ca_cert.pem \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/test1_key_and_cert.pem \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ibft \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-sit-ignore \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes-legacy \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes-legacy \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wpa-psk-unquoted2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1X-subj-matches \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-802-1x-ttls-eapgtc \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-peap-mschapv2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-agent \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-8021x-tls-always \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-auto-negotiate-on \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-autoip \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ctc-static \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-defroute-no-gatewaydev-yes \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-plus-ip \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp-send-hostname \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcp6-only \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-dhcpv6-hostname-fallback \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-global-gateway-ignore \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-1 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-2 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-3 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv4-manual-4 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-manual \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-8 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-16 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-24 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-passphrase \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-passphrase \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-40-ascii \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-40-ascii \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-104-ascii \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-104-ascii \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-never-default \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-obsolete-gateway-n \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-qeth-static \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ctc-static \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-main \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-component \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bridge-missing-stp \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-vlanid \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-only-device \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-physdev \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-1 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-reorder-hdr-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-1 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-flags-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-no-keys \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-permissions \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-wep-agent-keys \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wifi-dynamic-wep-leap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-dynamic-wep-leap \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-infiniband \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-eth-type \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-main \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-slave-ib \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-bond-mode-numeric \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-default-app-priorities \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-booleans \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-booleans \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-uints \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-uints \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-bad-percent \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-short-percent \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dcb-pgpct-not-100 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-fabric \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-fcoe-vn2vn \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-1 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-master-invalid \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-1 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-2 \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-team-port-empty-config \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-read-proxy-basic \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-trailing-spaces \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-dns-options \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-wake-on-lan \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-auto-negotiate-on \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-shared-plus-ip \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-bootproto \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-16 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-24 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-no-prefix-8 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-static-routes-legacy \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-unknown-ethtool-opt \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-ipv6-only-1 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-wired-wake-on-lan \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-1.expected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-2 \ -@@ -2159,32 +2158,34 @@ EXTRA_DIST += \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3.expected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4.expected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-a.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-b.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-wired-802-1X-subj-matches.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bond_Main.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bridge_Component.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Permissions.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Proxy_Basic.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Team_Port.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_VLAN_reorder_hdr.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Band_A.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Hidden.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_always.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_default.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_missing.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_never.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_LEAP.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_WEP_104_ASCII.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Auto-Negotiate.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection_2.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy.cexpected \ -- src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_User_1.cexpected -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-dynamic-wep-leap \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-leap \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-104-ascii \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-40-ascii \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-adhoc \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-eap-ttls-chap \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wep-passphrase \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-tls \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-eap-ttls-tls \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-adhoc \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-hex \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-unquoted2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wired-8021x-peap-mschapv2 \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-defroute-no-gatewaydev-yes \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-global-gateway-ignore \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/network-test-wired-never-default \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-static-routes-legacy \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/route-test-wired-static-routes-legacy \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/route6-test-wired-ipv6-manual \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/test1_key_and_cert.pem \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/test_ca_cert.pem \ -+ $(NULL) - - # make target dependencies can't have colons in their names, which ends up - # meaning that we can't add the alias files to EXTRA_DIST. They are instead --- -2.9.4 - - -From 20046c93062b14b0329cf151bc5e8a7f3c455531 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 25 May 2017 14:03:42 +0200 -Subject: [PATCH 4/5] ifcfg-rh/tests: add test for reading NETMASK property - -(cherry picked from commit ba05819c89d913ad1bc6b86e62c7704d173ef534) -(cherry picked from commit 7ebc132864776a1c0ce4a33660408a2953e076c8) ---- - Makefile.am | 1 + - shared/nm-utils/nm-test-utils.h | 9 +++++ - .../ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 | 14 +++++++ - .../network-scripts/ifcfg-netmask-1.cexpected | 22 +++++++++++ - .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 44 ++++++++++++++++++++++ - 5 files changed, 90 insertions(+) - create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 - create mode 100644 src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected - -diff --git a/Makefile.am b/Makefile.am -index c543a21..50ef197 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -2025,6 +2025,7 @@ EXTRA_DIST += \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected \ -+ src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection.cexpected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection_2.cexpected \ - src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected \ -diff --git a/shared/nm-utils/nm-test-utils.h b/shared/nm-utils/nm-test-utils.h -index 0dfdfce..bc52113 100644 ---- a/shared/nm-utils/nm-test-utils.h -+++ b/shared/nm-utils/nm-test-utils.h -@@ -1183,6 +1183,15 @@ nmtst_file_get_contents (const char *filename) - return contents; - } - -+#define nmtst_file_set_contents(filename, content) \ -+ G_STMT_START { \ -+ GError *_error = NULL; \ -+ gboolean _success; \ -+ \ -+ _success = g_file_set_contents ((filename), (content), -1, &_error); \ -+ nmtst_assert_success (_success, _error); \ -+ } G_STMT_END -+ - /*****************************************************************************/ - - static inline void -diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 -new file mode 100644 -index 0000000..ecb36c3 ---- /dev/null -+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1 -@@ -0,0 +1,14 @@ -+DNS1="192.0.2.1" -+IPADDR="102.0.2.2" -+GATEWAY="192.0.2.1" -+NETMASK="255.254.0.0" -+BOOTPROTO="static" -+DEVICE="eth1" -+ONBOOT="yes" -+IPV6INIT="yes" -+ -+#bogus -+PREFIX1=25 -+NETMASK0=255.255.0.0 -+ -+#end -diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected -new file mode 100644 -index 0000000..4c2294a ---- /dev/null -+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected -@@ -0,0 +1,22 @@ -+DNS1=192.0.2.1 -+IPADDR=102.0.2.2 -+GATEWAY=192.0.2.1 -+BOOTPROTO="static" -+DEVICE=eth1 -+ONBOOT=yes -+IPV6INIT=yes -+ -+#bogus -+ -+#end -+TYPE=Ethernet -+PROXY_METHOD=none -+BROWSER_ONLY=no -+PREFIX=15 -+DEFROUTE=yes -+IPV4_FAILURE_FATAL=no -+IPV6_AUTOCONF=yes -+IPV6_DEFROUTE=yes -+IPV6_FAILURE_FATAL=no -+NAME="System netmask-1" -+UUID=${UUID} -diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c -index babb068..e30d2d7 100644 ---- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c -+++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c -@@ -399,6 +399,48 @@ _writer_new_connection_fail (NMConnection *connection, - - /*****************************************************************************/ - -+static void -+test_read_netmask_1 (void) -+{ -+ nmtst_auto_unlinkfile char *testfile = NULL; -+ gs_unref_object NMConnection *connection = NULL; -+ gs_unref_object NMConnection *reread = NULL; -+ gs_free char *content = NULL; -+ NMSettingConnection *s_con; -+ NMSettingIPConfig *s_ip4; -+ NMIPAddress *ip4_addr; -+ const char *FILENAME = TEST_IFCFG_DIR "/network-scripts/ifcfg-netmask-1"; -+ -+ connection = _connection_from_file (FILENAME, NULL, TYPE_ETHERNET, NULL); -+ -+ s_con = nm_connection_get_setting_connection (connection); -+ g_assert (s_con); -+ g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "System netmask-1"); -+ -+ s_ip4 = nm_connection_get_setting_ip4_config (connection); -+ g_assert (s_ip4); -+ g_assert_cmpuint (nm_setting_ip_config_get_num_dns (s_ip4), ==, 1); -+ ip4_addr = nm_setting_ip_config_get_address (s_ip4, 0); -+ g_assert (ip4_addr); -+ g_assert_cmpstr (nm_ip_address_get_address (ip4_addr), ==, "102.0.2.2"); -+ g_assert_cmpint (nm_ip_address_get_prefix (ip4_addr), ==, 15); -+ -+ nmtst_assert_connection_verifies_without_normalization (connection); -+ -+ content = nmtst_file_get_contents (FILENAME); -+ -+ testfile = g_strdup (TEST_SCRATCH_DIR "/network-scripts/ifcfg-netmask-1.copy"); -+ -+ nmtst_file_set_contents (testfile, content); -+ -+ _writer_update_connection (connection, -+ TEST_SCRATCH_DIR "/network-scripts/", -+ testfile, -+ TEST_IFCFG_DIR "/network-scripts/ifcfg-netmask-1.cexpected"); -+} -+ -+/*****************************************************************************/ -+ - static gboolean - verify_cert_or_key (NMSetting8021x *s_compare, - const char *file, -@@ -9348,6 +9390,8 @@ int main (int argc, char **argv) - nmtst_add_test_func (TPATH "read-static", test_read_wired_static, TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-static", "System test-wired-static", GINT_TO_POINTER (TRUE)); - nmtst_add_test_func (TPATH "read-static-bootproto", test_read_wired_static, TEST_IFCFG_DIR"/network-scripts/ifcfg-test-wired-static-bootproto", "System test-wired-static-bootproto", GINT_TO_POINTER (FALSE)); - -+ g_test_add_func (TPATH "read-netmask-1", test_read_netmask_1); -+ - g_test_add_func (TPATH "read-dhcp", test_read_wired_dhcp); - g_test_add_func (TPATH "read-dhcp-plus-ip", test_read_wired_dhcp_plus_ip); - g_test_add_func (TPATH "read-shared-plus-ip", test_read_wired_shared_plus_ip); --- -2.9.4 - - -From 78895ad4d2fcc5fd3b2f845521ac14b9f6030fd6 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 25 May 2017 15:00:27 +0200 -Subject: [PATCH 5/5] ifcfg-rh: fix preserving NETMASK key in - write_ip4_setting() - -To support legacy scripts, we want to write out the NETMASK -key whenever the ifcfg file has a NETMASK key previously. -Note, that we anyway always write the relevant PREFIX key. -The NETMASK is redundant, only there to help legacy scripts. - -That was broken, because we would svUnsetValue("NETMASK") before -checking whether the NETMASK key is present. - -Also, when saving a connection to ifcfg-rh file that was created -by other tools, we might mix up the numbering. E.g. we never -write out IPADDR0. Hence, turn on legacy mode whenever the ifcfg-rh -file has any key starting with "NETMASK". - -(cherry picked from commit 844bf3d1a239f409d12ea437dbe866b66f5f1af4) -(cherry picked from commit 92a277dc6f08d66cf567b9bf6f1c32c513c7325e) ---- - .../plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 32 ++++++++++++---------- - .../network-scripts/ifcfg-netmask-1.cexpected | 1 + - 2 files changed, 18 insertions(+), 15 deletions(-) - -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 c66af01..d2b7ff6 100644 ---- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c -+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c -@@ -2067,6 +2067,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) - int timeout; - GString *searches; - const char *method = NULL; -+ gboolean has_netmask; - - s_ip4 = nm_connection_get_setting_ip4_config (connection); - if (!s_ip4) { -@@ -2139,16 +2140,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) - else if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) - svSetValueStr (ifcfg, "BOOTPROTO", "shared"); - -- /* Clear out un-numbered IP address fields */ -- svUnsetValue (ifcfg, "IPADDR"); -- svUnsetValue (ifcfg, "PREFIX"); -- svUnsetValue (ifcfg, "NETMASK"); -- svUnsetValue (ifcfg, "GATEWAY"); -- /* Clear out zero-indexed IP address fields */ -- svUnsetValue (ifcfg, "IPADDR0"); -- svUnsetValue (ifcfg, "PREFIX0"); -- svUnsetValue (ifcfg, "NETMASK0"); -- svUnsetValue (ifcfg, "GATEWAY0"); -+ has_netmask = !!svFindFirstKeyWithPrefix (ifcfg, "NETMASK"); - - /* Write out IPADDR, PREFIX, GATEWAY for current IP addresses - * without labels. Unset obsolete NETMASK. -@@ -2192,20 +2184,30 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) - g_free (tmp); - - /* If the legacy "NETMASK" is present, keep it. */ -- if (svGetValue (ifcfg, netmask_key, &tmp)) { -+ if (has_netmask) { - char buf[INET_ADDRSTRLEN]; - -- g_free (tmp); - svSetValueStr (ifcfg, netmask_key, - nm_utils_inet4_ntop (nm_utils_ip4_prefix_to_netmask (prefix), buf)); -- } -+ } else -+ svUnsetValue (ifcfg, netmask_key); - - svUnsetValue (ifcfg, gw_key); - n++; - } - -- /* Clear remaining IPADDR, etc */ -- for (i = n; i < 256; i++) { -+ svUnsetValue (ifcfg, "IPADDR0"); -+ svUnsetValue (ifcfg, "PREFIX0"); -+ svUnsetValue (ifcfg, "NETMASK0"); -+ svUnsetValue (ifcfg, "GATEWAY0"); -+ if (n == 0) { -+ svUnsetValue (ifcfg, "IPADDR"); -+ svUnsetValue (ifcfg, "PREFIX"); -+ svUnsetValue (ifcfg, "NETMASK"); -+ i = 1; -+ } else -+ i = n; -+ for (; i < 256; i++) { - nm_sprintf_buf (addr_key, "IPADDR%u", i); - nm_sprintf_buf (prefix_key, "PREFIX%u", i); - nm_sprintf_buf (netmask_key, "NETMASK%u", i); -diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected -index 4c2294a..5dfdce4 100644 ---- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected -+++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-netmask-1.cexpected -@@ -1,6 +1,7 @@ - DNS1=192.0.2.1 - IPADDR=102.0.2.2 - GATEWAY=192.0.2.1 -+NETMASK=255.254.0.0 - BOOTPROTO="static" - DEVICE=eth1 - ONBOOT=yes --- -2.9.4 - diff --git a/SOURCES/0015-route-get-crash-rh1534721.patch b/SOURCES/0015-route-get-crash-rh1534721.patch new file mode 100644 index 0000000..4a856ad --- /dev/null +++ b/SOURCES/0015-route-get-crash-rh1534721.patch @@ -0,0 +1,28 @@ +From abca0de3543a49157ca17b46313f7b9f77193abe Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Sun, 14 Jan 2018 15:17:14 +0100 +Subject: [PATCH 1/1] platform: fix wrong cleanup function in ip_route_get() + +Fixes: 33a2a7c3e3738b184233980a66f0093f073f97b1 +(cherry picked from commit 3de3f59ffd9fdc02332ab928352a1b8f8ae77982) +(cherry picked from commit c17315d555c812f8b14d36a34856f8030ecbfdc5) +--- + src/platform/nm-linux-platform.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c +index e66ab9449..fe270e88d 100644 +--- a/src/platform/nm-linux-platform.c ++++ b/src/platform/nm-linux-platform.c +@@ -6416,7 +6416,7 @@ ip_route_get (NMPlatform *platform, + int try_count = 0; + WaitForNlResponseResult seq_result; + int nle; +- nm_auto_nlmsg NMPObject *route = NULL; ++ nm_auto_nmpobj NMPObject *route = NULL; + + nm_assert (NM_IS_LINUX_PLATFORM (platform)); + nm_assert (NM_IN_SET (addr_family, AF_INET, AF_INET6)); +-- +2.14.3 + diff --git a/SOURCES/0016-ovs-interface-dhcp-twice-rh1540063.patch b/SOURCES/0016-ovs-interface-dhcp-twice-rh1540063.patch new file mode 100644 index 0000000..4bb3a10 --- /dev/null +++ b/SOURCES/0016-ovs-interface-dhcp-twice-rh1540063.patch @@ -0,0 +1,92 @@ +From a645c8dd7190aa075227728e5f234a5169bfbab1 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Fri, 2 Feb 2018 17:25:04 +0100 +Subject: [PATCH] ovs-interface: avoid starting ip[46] configuration more than + once + +OvsInterface can postpone the stage3_ip[46]_config until the link +actually appears. It ought to restart the stage only when the link +appears, not upon further changes to it (which would trip an assertion +when starting the DHCP client while one already exists). + +https://bugzilla.redhat.com/show_bug.cgi?id=1540063 +--- + src/devices/ovs/nm-device-ovs-interface.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/src/devices/ovs/nm-device-ovs-interface.c b/src/devices/ovs/nm-device-ovs-interface.c +index 426521c52..1342ed948 100644 +--- a/src/devices/ovs/nm-device-ovs-interface.c ++++ b/src/devices/ovs/nm-device-ovs-interface.c +@@ -35,8 +35,13 @@ _LOG_DECLARE_SELF(NMDeviceOvsInterface); + + /*****************************************************************************/ + ++typedef struct { ++ gboolean waiting_for_interface; ++} NMDeviceOvsInterfacePrivate; ++ + struct _NMDeviceOvsInterface { + NMDevice parent; ++ NMDeviceOvsInterfacePrivate _priv; + }; + + struct _NMDeviceOvsInterfaceClass { +@@ -45,6 +50,8 @@ struct _NMDeviceOvsInterfaceClass { + + G_DEFINE_TYPE (NMDeviceOvsInterface, nm_device_ovs_interface, NM_TYPE_DEVICE) + ++#define NM_DEVICE_OVS_INTERFACE_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceOvsInterface, NM_IS_DEVICE_OVS_INTERFACE) ++ + /*****************************************************************************/ + + static const char * +@@ -109,7 +116,10 @@ static void + link_changed (NMDevice *device, + const NMPlatformLink *pllink) + { +- if (nm_device_get_state (device) == NM_DEVICE_STATE_IP_CONFIG) { ++ NMDeviceOvsInterfacePrivate *priv = NM_DEVICE_OVS_INTERFACE_GET_PRIVATE (device); ++ ++ if (priv->waiting_for_interface) { ++ priv->waiting_for_interface = FALSE; + nm_device_bring_up (device, TRUE, NULL); + nm_device_activate_schedule_stage3_ip_config_start (device); + } +@@ -131,11 +141,15 @@ act_stage3_ip4_config_start (NMDevice *device, + NMIP4Config **out_config, + NMDeviceStateReason *out_failure_reason) + { ++ NMDeviceOvsInterfacePrivate *priv = NM_DEVICE_OVS_INTERFACE_GET_PRIVATE (device); ++ + if (!_is_internal_interface (device)) + return NM_ACT_STAGE_RETURN_IP_FAIL; + +- if (!nm_device_get_ip_ifindex (device)) ++ if (!nm_device_get_ip_ifindex (device)) { ++ priv->waiting_for_interface = TRUE; + return NM_ACT_STAGE_RETURN_POSTPONE; ++ } + + return NM_DEVICE_CLASS (nm_device_ovs_interface_parent_class)->act_stage3_ip4_config_start (device, out_config, out_failure_reason); + } +@@ -145,11 +159,15 @@ act_stage3_ip6_config_start (NMDevice *device, + NMIP6Config **out_config, + NMDeviceStateReason *out_failure_reason) + { ++ NMDeviceOvsInterfacePrivate *priv = NM_DEVICE_OVS_INTERFACE_GET_PRIVATE (device); ++ + if (!_is_internal_interface (device)) + return NM_ACT_STAGE_RETURN_IP_FAIL; + +- if (!nm_device_get_ip_ifindex (device)) ++ if (!nm_device_get_ip_ifindex (device)) { ++ priv->waiting_for_interface = TRUE; + return NM_ACT_STAGE_RETURN_POSTPONE; ++ } + + return NM_DEVICE_CLASS (nm_device_ovs_interface_parent_class)->act_stage3_ip6_config_start (device, out_config, out_failure_reason); + } +-- +2.14.3 + diff --git a/SOURCES/0016-tui-connect-crash-rh1456826.patch b/SOURCES/0016-tui-connect-crash-rh1456826.patch deleted file mode 100644 index 9568042..0000000 --- a/SOURCES/0016-tui-connect-crash-rh1456826.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c710b2bf095e9301066d33a13e8a406f0d134b2f Mon Sep 17 00:00:00 2001 -From: Arnaud Lefebvre -Date: Tue, 30 May 2017 13:45:32 +0200 -Subject: [PATCH 1/1] nmtui connect: avoid segfault when iface is not found - -https://github.com/NetworkManager/NetworkManager/pull/21 -(cherry picked from commit 1fcbb69ae22ed4a6047e36c816f49b2a67a13583) -(cherry picked from commit cc36b9f6eb7870d02e0df7c26a7a980709b620fd) ---- - clients/tui/nmt-connect-connection-list.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/clients/tui/nmt-connect-connection-list.c b/clients/tui/nmt-connect-connection-list.c -index edfaa09..0011fc5 100644 ---- a/clients/tui/nmt-connect-connection-list.c -+++ b/clients/tui/nmt-connect-connection-list.c -@@ -621,6 +621,7 @@ nmt_connect_connection_list_get_connection (NmtConnectConnectionList *list, - NmtConnectDevice *nmtdev; - NmtConnectConnection *nmtconn = NULL; - NMConnection *conn = NULL; -+ const char *iface = NULL; - - g_return_val_if_fail (identifier, FALSE); - -@@ -643,9 +644,12 @@ nmt_connect_connection_list_get_connection (NmtConnectConnectionList *list, - goto found; - } - -- if (!conn && nmtdev->device && !strcmp (identifier, nm_device_get_ip_iface (nmtdev->device))) { -- nmtconn = nmtdev->conns->data; -- goto found; -+ if (!conn && nmtdev->device) { -+ iface = nm_device_get_ip_iface (nmtdev->device); -+ if (iface && !strcmp (identifier, iface)) { -+ nmtconn = nmtdev->conns->data; -+ goto found; -+ } - } - } - --- -2.9.4 - diff --git a/SOURCES/0017-ensure-alignment-of-team-properties-rh1533830.patch b/SOURCES/0017-ensure-alignment-of-team-properties-rh1533830.patch new file mode 100644 index 0000000..d912367 --- /dev/null +++ b/SOURCES/0017-ensure-alignment-of-team-properties-rh1533830.patch @@ -0,0 +1,31 @@ +From fa3efd3ed6d91447d24e6f3f3d6c58180a0c36f0 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 19 Jan 2018 11:52:57 +0100 +Subject: [PATCH] libnm-core: ensure alignment of team.config and other team + properties + +https://bugzilla.redhat.com/show_bug.cgi?id=1533830 +(cherry picked from commit 381c1a19b6d1903ec3d791df8d8a933fd9c306f3) +--- + libnm-core/nm-setting-team.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c +index 01b22d9bd..60bdf5f6b 100644 +--- a/libnm-core/nm-setting-team.c ++++ b/libnm-core/nm-setting-team.c +@@ -1485,8 +1485,10 @@ set_property (GObject *object, guint prop_id, + break; + } + +- if (align_config) ++ if (align_config) { + _nm_utils_json_append_gvalue (&priv->config, _prop_to_keys[prop_id], align_value); ++ _align_team_properties (setting); ++ } + } + + static void +-- +2.14.3 + diff --git a/SOURCES/0017-libnm-fix-reject-vlan-id-4095-rh1456911.patch b/SOURCES/0017-libnm-fix-reject-vlan-id-4095-rh1456911.patch deleted file mode 100644 index baf5ced..0000000 --- a/SOURCES/0017-libnm-fix-reject-vlan-id-4095-rh1456911.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 2522c3be75c94d6285c6b514f404edea20f4807e Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Tue, 30 May 2017 18:12:23 +0200 -Subject: [PATCH 1/1] libnm: fix rejecting NMSettingVlan with id >= 4095 - -Without it, clients can wrongly create VLan settings with -ID 4095, which triggers assertions in NetworkManager. - -Fixes: 8715d61437060cacc68c156b1c8ed7bbce4b0a78 -(cherry picked from commit 159cd4836fb32f3a6ecefa6fc4dcc114892ce32a) -(cherry picked from commit 8db2ca661f739a301729bb2c63e5d00707a4f2c3) ---- - libnm-core/nm-setting-vlan.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/libnm-core/nm-setting-vlan.c b/libnm-core/nm-setting-vlan.c -index de9c5c4..ab1c546 100644 ---- a/libnm-core/nm-setting-vlan.c -+++ b/libnm-core/nm-setting-vlan.c -@@ -670,6 +670,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) - _("the vlan id must be in range 0-4094 but is %u"), - priv->id); - g_prefix_error (error, "%s.%s: ", NM_SETTING_VLAN_SETTING_NAME, NM_SETTING_VLAN_ID); -+ return FALSE; - } - - if (priv->flags & ~NM_VLAN_FLAGS_ALL) { --- -2.9.4 - diff --git a/SOURCES/0018-periodic-connectivity-check-rh1458399.patch b/SOURCES/0018-periodic-connectivity-check-rh1458399.patch deleted file mode 100644 index ac3e26f..0000000 --- a/SOURCES/0018-periodic-connectivity-check-rh1458399.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 2d4555ec97d2cb0829106cbff82753bd168e5a20 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 12 May 2017 09:37:42 +0200 -Subject: [PATCH 1/3] connectivity: avoid compiler warning for argument of - curl_easy_getinfo() - -libcurl employs some typechecking via "curl/typecheck-gcc.h". When -compling with --enable-lto, compilation fails otherwise with: - - make[2]: Entering directory '/data/src/NetworkManager' - CC src/src_libNetworkManager_la-nm-connectivity.lo - CCLD src/libNetworkManager.la - CCLD src/libNetworkManagerTest.la - CCLD src/dhcp/tests/test-dhcp-dhclient - src/nm-connectivity.c: In function 'curl_check_connectivity': - src/nm-connectivity.c:147:10: error: call to '_curl_easy_getinfo_err_string' declared with attribute warning: curl_easy_getinfo expects a pointer to char * for this info [-Werror] - eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, &cb_data); - ^ - lto1: all warnings being treated as errors - lto-wrapper: fatal error: /usr/bin/gcc returned 1 exit status - compilation terminated. - /usr/bin/ld: error: lto-wrapper failed - -(cherry picked from commit 7f8815a9c35c3b588b174c5e0c2568d3068726f6) -(cherry picked from commit 7f139c8ea87d0ceaa1f1d3601c846ace9054ffe5) ---- - src/nm-connectivity.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 75bb7b6..0708d96 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -144,7 +144,7 @@ curl_check_connectivity (CURLM *mhandle, CURLMcode ret) - continue; - - /* Here we have completed a session. Check easy session result. */ -- eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, &cb_data); -+ eret = curl_easy_getinfo (msg->easy_handle, CURLINFO_PRIVATE, (char **) &cb_data); - if (eret != CURLE_OK) { - _LOG2E ("curl cannot extract cb_data for easy handle %p, skipping msg", msg->easy_handle); - continue; --- -2.9.4 - - -From e94a36ce1c880c5a4f52ae59d18bb2b6d2bee704 Mon Sep 17 00:00:00 2001 -From: Francesco Giudici -Date: Wed, 3 May 2017 17:01:41 +0200 -Subject: [PATCH 2/3] connectivity: fix typo in error message - -(cherry picked from commit 7a2c31a54a7ee82b930b0d9ef21ea11f565c2859) -(cherry picked from commit 16187171709347611caf9b8e8c75988c15b66b12) ---- - src/nm-connectivity.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index 0708d96..b96737c 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -498,7 +498,7 @@ nm_connectivity_init (NMConnectivity *self) - priv->curl_mhandle = curl_multi_init (); - - if (priv->curl_mhandle == NULL) { -- _LOGE ("cnable to init cURL, connectivity check will not work"); -+ _LOGE ("unable to init cURL, connectivity check will not work"); - return; - } - --- -2.9.4 - - -From fe45631585e93e15c552194cf4ffd82cbe513ee1 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 2 Jun 2017 19:11:11 +0200 -Subject: [PATCH 3/3] connectivity: fix scheduling periodic connectivity checks - -commit a955639 (connectivity: don't do periodic checks on interval=0) -broke scheduling connectivity checks. - -That is because the timer is on only scheduled if -nm_connectivity_check_enabled(), which in turn only returns TRUE -if curl_mhandle is set. However, nm_connectivity_init() would only -initialize curl_mhandle after update_config(), missing to schedule -the periodic task. - -https://mail.gnome.org/archives/networkmanager-list/2017-May/msg00076.html - -Fixes: a95563996f07641e9877eb1760cac24415b65070 -(cherry picked from commit f1eb1619f173a092c49dfcd1d53ec356827b6e0a) -(cherry picked from commit e984d9eb36f7838df58c0606bd00efc10730d329) ---- - src/nm-connectivity.c | 29 +++++++++++++++-------------- - 1 file changed, 15 insertions(+), 14 deletions(-) - -diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c -index b96737c..6f16b28 100644 ---- a/src/nm-connectivity.c -+++ b/src/nm-connectivity.c -@@ -486,27 +486,28 @@ nm_connectivity_init (NMConnectivity *self) - NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); - CURLcode retv; - -- priv->config = g_object_ref (nm_config_get ()); -- update_config (self, nm_config_get_data (priv->config)); -- g_signal_connect (G_OBJECT (priv->config), -- NM_CONFIG_SIGNAL_CONFIG_CHANGED, -- G_CALLBACK (config_changed_cb), -- self); -- - retv = curl_global_init (CURL_GLOBAL_ALL); - if (retv == CURLE_OK) - priv->curl_mhandle = curl_multi_init (); - -- if (priv->curl_mhandle == NULL) { -+ if (!priv->curl_mhandle) - _LOGE ("unable to init cURL, connectivity check will not work"); -- return; -+ else { -+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETFUNCTION, multi_socket_cb); -+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETDATA, self); -+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERFUNCTION, multi_timer_cb); -+ curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERDATA, self); -+ curl_multi_setopt (priv->curl_mhandle, CURLOPT_VERBOSE, 1); - } - -- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETFUNCTION, multi_socket_cb); -- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_SOCKETDATA, self); -- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERFUNCTION, multi_timer_cb); -- curl_multi_setopt (priv->curl_mhandle, CURLMOPT_TIMERDATA, self); -- curl_multi_setopt (priv->curl_mhandle, CURLOPT_VERBOSE, 1); -+ priv->config = g_object_ref (nm_config_get ()); -+ -+ update_config (self, nm_config_get_data (priv->config)); -+ g_signal_connect (G_OBJECT (priv->config), -+ NM_CONFIG_SIGNAL_CONFIG_CHANGED, -+ G_CALLBACK (config_changed_cb), -+ self); -+ - } - - static void --- -2.9.4 - diff --git a/SOURCES/0018-team-link-watchers-fixes-rh1533926.patch b/SOURCES/0018-team-link-watchers-fixes-rh1533926.patch new file mode 100644 index 0000000..e14f179 --- /dev/null +++ b/SOURCES/0018-team-link-watchers-fixes-rh1533926.patch @@ -0,0 +1,65 @@ +From 97d153d9e34916b386bc6ef5d824859328acb569 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 19 Jan 2018 19:27:44 +0100 +Subject: [PATCH 1/2] nmcli: clear link-watchers before adding the new ones we + want to set + +(cherry picked from commit ff16252a71306716677885d8de1ece140407f551) +--- + clients/common/nm-meta-setting-desc.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index d4f162fb4..53d8350d7 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -4038,6 +4038,7 @@ _set_fcn_team_link_watchers (ARGS_SET_FCN) + const char *const*iter; + NMTeamLinkWatcher *watcher; + ++ nm_setting_team_clear_link_watchers (NM_SETTING_TEAM (setting)); + strv = nmc_strsplit_set (value, ",", 0); + for (iter = (const char *const*) strv; *iter; iter++) { + watcher = _parse_team_link_watcher (*iter, error); +@@ -4110,6 +4111,7 @@ _set_fcn_team_port_link_watchers (ARGS_SET_FCN) + const char *const*iter; + NMTeamLinkWatcher *watcher; + ++ nm_setting_team_port_clear_link_watchers (NM_SETTING_TEAM_PORT (setting)); + strv = nmc_strsplit_set (value, ",", 0); + for (iter = (const char *const*) strv; *iter; iter++) { + watcher = _parse_team_link_watcher (*iter, error); +-- +2.14.3 + + +From 4f76b01f10397dd84c5a6a75ea53cf89592e341d Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 19 Jan 2018 19:53:10 +0100 +Subject: [PATCH 2/2] doc: fix describe message for team link watchers + +(cherry picked from commit d7f3c79881f0c4db5e14f7cce01b90ef63cacb4f) +--- + clients/common/nm-meta-setting-desc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index 53d8350d7..46b06fd40 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -4959,10 +4959,10 @@ static const NMMetaPropertyType _pt_gobject_devices = { + "Properties available for the 'nsna_ping' link watcher:\n" \ + " 'init-wait', 'interval', 'missed-max', 'target-host'*\n\n" \ + "Properties available for the 'arp_ping' include all the ones for 'nsna_ping' and:\n" \ +- " 'source-host', 'validate-active', 'validate-inactive', 'send-always'.\n\n" \ ++ " 'source-host'*, 'validate-active', 'validate-inactive', 'send-always'.\n\n" \ + "Properties flagged with a '*' are mandatory.\n\n" \ + "Example:\n" \ +- " name=arp_ping,source-host=172.16.1.1,target-host=172.16.1.254; name=ethtool,delay-up=3\n") ++ " name=arp_ping source-host=172.16.1.1 target-host=172.16.1.254, name=ethtool delay-up=3\n") + + + #define DEFINE_DCB_PROPRITY_PROPERTY_TYPE \ +-- +2.14.3 + diff --git a/SOURCES/0019-bond-improve-option-matching-rh1457909.patch b/SOURCES/0019-bond-improve-option-matching-rh1457909.patch deleted file mode 100644 index 04cda39..0000000 --- a/SOURCES/0019-bond-improve-option-matching-rh1457909.patch +++ /dev/null @@ -1,252 +0,0 @@ -From 8c6f8c65955d18ca9b43ad2bcd1bccf2cd85e7ed Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Mon, 5 Jun 2017 13:51:18 +0200 -Subject: [PATCH 1/2] libnm-core: remove unsupported bond options during - normalization - -In an ideal world, we should not validate connections containing -options not valid for the current bond mode. However adding such -restriction now means that during an upgrade to the new NM version -some connections that were valid before become invalid, possibly -disrupting connectivity. - -Instead, consider invalid options as a normalizable error and remove -them during normalization. - -Converting the setting to a "canonical" form without invalid options -is important for the connection matching logic, where such invalid -options can cause false mismatches. - -(cherry picked from commit f25e008e2fe655bbddbb8a66612a9d141e982049) -(cherry picked from commit ac7a5c074c72310d8328fb448824d29bbec932f3) ---- - libnm-core/nm-connection.c | 31 +++++++++++++++++++++++ - libnm-core/nm-setting-bond.c | 18 +++++++++++++ - libnm-core/tests/test-setting-bond.c | 49 ++++++++++++++++++++++++++++++++++++ - 3 files changed, 98 insertions(+) - -diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c -index ecfb978..c1b7506 100644 ---- a/libnm-core/nm-connection.c -+++ b/libnm-core/nm-connection.c -@@ -913,6 +913,36 @@ _normalize_bond_mode (NMConnection *self, GHashTable *parameters) - } - - static gboolean -+_normalize_bond_options (NMConnection *self, GHashTable *parameters) -+{ -+ NMSettingBond *s_bond = nm_connection_get_setting_bond (self); -+ gboolean changed = FALSE; -+ const char *name, *mode_str; -+ NMBondMode mode; -+ guint32 num, i; -+ -+ /* Strip away unsupported options for current mode */ -+ if (s_bond) { -+ mode_str = nm_setting_bond_get_option_by_name (s_bond, NM_SETTING_BOND_OPTION_MODE); -+ mode = _nm_setting_bond_mode_from_string (mode_str); -+ if (mode == NM_BOND_MODE_UNKNOWN) -+ return FALSE; -+again: -+ num = nm_setting_bond_get_num_options (s_bond); -+ for (i = 0; i < num; i++) { -+ if ( nm_setting_bond_get_option (s_bond, i, &name, NULL) -+ && !_nm_setting_bond_option_supported (name, mode)) { -+ nm_setting_bond_remove_option (s_bond, name); -+ changed = TRUE; -+ goto again; -+ } -+ } -+ } -+ -+ return changed; -+} -+ -+static gboolean - _normalize_wireless_mac_address_randomization (NMConnection *self, GHashTable *parameters) - { - NMSettingWireless *s_wifi = nm_connection_get_setting_wireless (self); -@@ -1275,6 +1305,7 @@ nm_connection_normalize (NMConnection *connection, - was_modified |= _normalize_ethernet_link_neg (connection); - was_modified |= _normalize_infiniband_mtu (connection, parameters); - was_modified |= _normalize_bond_mode (connection, parameters); -+ was_modified |= _normalize_bond_options (connection, parameters); - was_modified |= _normalize_wireless_mac_address_randomization (connection, parameters); - was_modified |= _normalize_team_config (connection, parameters); - was_modified |= _normalize_team_port_config (connection, parameters); -diff --git a/libnm-core/nm-setting-bond.c b/libnm-core/nm-setting-bond.c -index 9a8bdc3..b62964c 100644 ---- a/libnm-core/nm-setting-bond.c -+++ b/libnm-core/nm-setting-bond.c -@@ -542,6 +542,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) - const char *arp_ip_target = NULL; - const char *lacp_rate; - const char *primary; -+ NMBondMode bond_mode; - - g_hash_table_iter_init (&iter, priv->options); - while (g_hash_table_iter_next (&iter, (gpointer) &key, (gpointer) &value)) { -@@ -776,6 +777,23 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) - return NM_SETTING_VERIFY_NORMALIZABLE; - } - -+ /* normalize unsupported options for the current mode */ -+ bond_mode = _nm_setting_bond_mode_from_string (mode_new); -+ g_hash_table_iter_init (&iter, priv->options); -+ while (g_hash_table_iter_next (&iter, (gpointer) &key, NULL)) { -+ if (nm_streq (key, "mode")) -+ continue; -+ if (!_nm_setting_bond_option_supported (key, bond_mode)) { -+ g_set_error (error, -+ NM_CONNECTION_ERROR, -+ NM_CONNECTION_ERROR_INVALID_PROPERTY, -+ _("'%s' option is not valid with mode '%s'"), -+ key, mode_new); -+ g_prefix_error (error, "%s.%s: ", NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS); -+ return NM_SETTING_VERIFY_NORMALIZABLE; -+ } -+ } -+ - return TRUE; - } - -diff --git a/libnm-core/tests/test-setting-bond.c b/libnm-core/tests/test-setting-bond.c -index 91a8199..e6a65bb 100644 ---- a/libnm-core/tests/test-setting-bond.c -+++ b/libnm-core/tests/test-setting-bond.c -@@ -182,6 +182,54 @@ test_compare (void) - ((const char *[]){ "num_unsol_na", "4", "num_grat_arp", "4", NULL })); - } - -+static void -+test_normalize_options (const char **opts1, const char **opts2) -+{ -+ gs_unref_object NMConnection *con = NULL; -+ NMSettingBond *s_bond; -+ GError *error = NULL; -+ gboolean success; -+ const char **p; -+ int num = 0; -+ -+ create_bond_connection (&con, &s_bond); -+ -+ for (p = opts1; p[0] && p[1]; p += 2) -+ g_assert (nm_setting_bond_add_option (s_bond, p[0], p[1])); -+ -+ nmtst_assert_connection_verifies_and_normalizable (con); -+ nmtst_connection_normalize (con); -+ success = nm_setting_verify ((NMSetting *) s_bond, con, &error); -+ nmtst_assert_success (success, error); -+ -+ for (p = opts2; p[0] && p[1]; p += 2) { -+ g_assert_cmpstr (nm_setting_bond_get_option_by_name (s_bond, p[0]), ==, p[1]); -+ num++; -+ } -+ -+ g_assert_cmpint (num, ==, nm_setting_bond_get_num_options (s_bond)); -+} -+ -+static void -+test_normalize (void) -+{ -+ test_normalize_options ( -+ ((const char *[]){ "mode", "802.3ad", "ad_actor_system", "00:02:03:04:05:06", NULL }), -+ ((const char *[]){ "mode", "802.3ad", "ad_actor_system", "00:02:03:04:05:06", NULL })); -+ test_normalize_options ( -+ ((const char *[]){ "mode", "1", "miimon", "1", NULL }), -+ ((const char *[]){ "mode", "active-backup", "miimon", "1", NULL })); -+ test_normalize_options ( -+ ((const char *[]){ "mode", "balance-alb", "tlb_dynamic_lb", "1", NULL }), -+ ((const char *[]){ "mode", "balance-alb", NULL })); -+ test_normalize_options ( -+ ((const char *[]){ "mode", "balance-tlb", "tlb_dynamic_lb", "1", NULL }), -+ ((const char *[]){ "mode", "balance-tlb", "tlb_dynamic_lb", "1", NULL })); -+ test_normalize_options ( -+ ((const char *[]){ "mode", "balance-rr", "ad_actor_sys_prio", "4", "packets_per_slave", "3", NULL }), -+ ((const char *[]){ "mode", "balance-rr", "packets_per_slave", "3", NULL })); -+} -+ - #define TPATH "/libnm/settings/bond/" - - NMTST_DEFINE (); -@@ -193,6 +241,7 @@ main (int argc, char **argv) - - g_test_add_func (TPATH "verify", test_verify); - g_test_add_func (TPATH "compare", test_compare); -+ g_test_add_func (TPATH "normalize", test_normalize); - - return g_test_run (); - } --- -2.9.3 - -From 0d96d249ffe95e0232b8247e6bb9c1385a2b4940 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Mon, 5 Jun 2017 14:48:08 +0200 -Subject: [PATCH 2/2] bond: add only supported options to the generated - connection - -Upstream commit [1] changed in the kernel the default value of -tlb_dynamic_lb bond from 1 to 0 when the mode is not tlb. This is not -wrong, as the option value doesn't really matter for other modes, but -it breaks the connection matching because we read back a 0 value when -we expect a default of 1. - -Fix this in a generic way by ignoring altogether options that are not -relevant for the current bond mode, because they are removed from the -connection during normalization. - -[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8b426dc54cf4056984bab7dfa48c92ee79a46434 - -https://bugzilla.redhat.com/show_bug.cgi?id=1457909 -(cherry picked from commit 056a973a4fdb68abe8bc7bfc5f31250345d71f21) -(cherry picked from commit 61817661c899844ddb364ebd529716f574146588) ---- - src/devices/nm-device-bond.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c -index 3325c94..c8748fe 100644 ---- a/src/devices/nm-device-bond.c -+++ b/src/devices/nm-device-bond.c -@@ -155,6 +155,7 @@ update_connection (NMDevice *device, NMConnection *connection) - { - NMSettingBond *s_bond = nm_connection_get_setting_bond (connection); - int ifindex = nm_device_get_ifindex (device); -+ NMBondMode mode = NM_BOND_MODE_UNKNOWN; - const char **options; - - if (!s_bond) { -@@ -164,7 +165,7 @@ update_connection (NMDevice *device, NMConnection *connection) - - /* Read bond options from sysfs and update the Bond setting to match */ - options = nm_setting_bond_get_valid_options (s_bond); -- while (options && *options) { -+ for (; *options; options++) { - gs_free char *value = nm_platform_sysctl_master_get_option (nm_device_get_platform (device), ifindex, *options); - const char *defvalue = nm_setting_bond_get_option_default (s_bond, *options); - char *p; -@@ -176,6 +177,12 @@ update_connection (NMDevice *device, NMConnection *connection) - *p = '\0'; - } - -+ if (nm_streq (*options, NM_SETTING_BOND_OPTION_MODE)) -+ mode = _nm_setting_bond_mode_from_string (value); -+ -+ if (!_nm_setting_bond_option_supported (*options, mode)) -+ continue; -+ - if ( value - && value[0] - && !ignore_if_zero (*options, value) -@@ -190,7 +197,6 @@ update_connection (NMDevice *device, NMConnection *connection) - - nm_setting_bond_add_option (s_bond, *options, value); - } -- options++; - } - } - --- -2.9.3 - diff --git a/SOURCES/0019-update-team-runner-desc-rh1533799.patch b/SOURCES/0019-update-team-runner-desc-rh1533799.patch new file mode 100644 index 0000000..a915974 --- /dev/null +++ b/SOURCES/0019-update-team-runner-desc-rh1533799.patch @@ -0,0 +1,57 @@ +From c6e1b3abc03d686441869c184206780e43a1c13b Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 12 Jan 2018 14:05:24 +0100 +Subject: [PATCH 1/2] libnm-core: update team.runner description + +https://bugzilla.redhat.com/show_bug.cgi?id=1533799 +(cherry picked from commit 112f8bd5aff2c5d543699d968f56c7f98be07eec) +--- + libnm-core/nm-setting-team.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c +index 88008e422..01b22d9bd 100644 +--- a/libnm-core/nm-setting-team.c ++++ b/libnm-core/nm-setting-team.c +@@ -1656,6 +1656,10 @@ nm_setting_team_class_init (NMSettingTeamClass *setting_class) + * Corresponds to the teamd runner.name. + * Permitted values are: "roundrobin", "broadcast", "activebackup", + * "loadbalance", "lacp". ++ * When setting the runner, all the properties specific to the runner ++ * will be reset to the default value; all the properties specific to ++ * other runners will be set to an empty value (or if not possible to ++ * a default value). + * + * Since: 1.10.2 + **/ +-- +2.14.3 + + +From bcababf6126650e9d9bea7d2c48582f435c287c2 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 12 Jan 2018 15:20:23 +0100 +Subject: [PATCH 2/2] libnm-core: docs update requires also settings-docs.c.in + update + +Fixes: c6e1b3abc03d686441869c184206780e43a1c13b +--- + clients/common/settings-docs.c.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/clients/common/settings-docs.c.in b/clients/common/settings-docs.c.in +index bf544ab6e..bf5753c57 100644 +--- a/clients/common/settings-docs.c.in ++++ b/clients/common/settings-docs.c.in +@@ -325,7 +325,7 @@ + #define DESCRIBE_DOC_NM_SETTING_TEAM_NAME N_("The setting's name, which uniquely identifies the setting within the connection. Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".") + #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_COUNT N_("Corresponds to the teamd notify_peers.count.") + #define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL N_("Corresponds to the teamd notify_peers.interval.") +-#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\".") ++#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\". When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value).") + #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_ACTIVE N_("Corresponds to the teamd runner.active.") + #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY N_("Corresponds to the teamd runner.agg_select_policy.") + #define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_FAST_RATE N_("Corresponds to the teamd runner.fast_rate.") +-- +2.14.3 + diff --git a/SOURCES/0020-device-fix-external-assume-rh1457242.patch b/SOURCES/0020-device-fix-external-assume-rh1457242.patch deleted file mode 100644 index 6e06e89..0000000 --- a/SOURCES/0020-device-fix-external-assume-rh1457242.patch +++ /dev/null @@ -1,43 +0,0 @@ -From b905393348574d8a363fe3fac4afb2fe6b03cfc0 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Thu, 1 Jun 2017 22:04:26 +0200 -Subject: [PATCH 1/1] device: mark device as sys-iface-state=external when - assuming connection - -Since commit 74dac5f (nm-manager: try assuming connections on managed devices), -and commit f4226e7 (manager: avoid generating in memory connections -during startup for managed devices), recheck_assume_connection() also -assumes connections on devices that are currently not in sys-iface-state -"external". - -That is correct, as also for fully managed devices (which are currently -in disconnected state), we want to assume external connections. However, -when doing that, we must reset the sys-iface-state to external. - -https://bugzilla.redhat.com/show_bug.cgi?id=1457242 -(cherry picked from commit 02e7476e9fd0f4248009ce8eaa7870ba05e2504e) -(cherry picked from commit fcbcd1aa870ec5aa74c5c570ea08ffc52cffa63e) ---- - src/nm-manager.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 3d94ce9..283ceda 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1884,8 +1884,10 @@ recheck_assume_connection (NMManager *self, - _LOGD (LOGD_DEVICE, "(%s): will attempt to assume connection", - nm_device_get_iface (device)); - -- if (!generated) -- nm_device_sys_iface_state_set (device, NM_DEVICE_SYS_IFACE_STATE_ASSUME); -+ nm_device_sys_iface_state_set (device, -+ generated -+ ? NM_DEVICE_SYS_IFACE_STATE_EXTERNAL -+ : NM_DEVICE_SYS_IFACE_STATE_ASSUME); - - /* Move device to DISCONNECTED to activate the connection */ - if (state == NM_DEVICE_STATE_UNMANAGED) { --- -2.9.4 - diff --git a/SOURCES/0020-team-fix-runner-sys_prio-default-rh1533810.patch b/SOURCES/0020-team-fix-runner-sys_prio-default-rh1533810.patch new file mode 100644 index 0000000..7323dfb --- /dev/null +++ b/SOURCES/0020-team-fix-runner-sys_prio-default-rh1533810.patch @@ -0,0 +1,100 @@ +From f219090fdd1bc0ed068f95ee03ce12823d6968d3 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 12 Jan 2018 18:33:59 +0100 +Subject: [PATCH 1/2] cli: get team defaults from setting header files + +this allows centralizing default values definition and allows quicker +and safer update of default values. + +(cherry picked from commit c6448f724b1debb39973f4bfbf9ce4f79218b936) +--- + clients/common/nm-meta-setting-desc.c | 8 ++++---- + libnm-core/nm-utils.c | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index 9d0ac9061..d4f162fb4 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -6625,7 +6625,7 @@ static const NMMetaPropertyInfo *const property_infos_TEAM[] = { + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { +- .value = 50, ++ .value = NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL_DEFAULT, + .nick = "default", + } + ), +@@ -6642,7 +6642,7 @@ static const NMMetaPropertyInfo *const property_infos_TEAM[] = { + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { +- .value = 255, ++ .value = NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT, + .nick = "default", + } + ), +@@ -6698,7 +6698,7 @@ static const NMMetaPropertyInfo *const property_infos_TEAM_PORT[] = { + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { +- .value = -1, ++ .value = NM_SETTING_TEAM_PORT_QUEUE_ID_DEFAULT, + .nick = "default", + } + ), +@@ -6723,7 +6723,7 @@ static const NMMetaPropertyInfo *const property_infos_TEAM_PORT[] = { + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { +- .value = 255, ++ .value = NM_SETTING_TEAM_PORT_LACP_PRIO_DEFAULT, + .nick = "default", + } + ), +diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c +index df58409bf..ce3536c84 100644 +--- a/libnm-core/nm-utils.c ++++ b/libnm-core/nm-utils.c +@@ -5151,9 +5151,9 @@ _json_team_normalize_defaults (json_t *json, gboolean reset) + _json_delete_object_on_string_match (json, "runner", "hwaddr_policy", NULL, + NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_DEFAULT); + } else if (nm_streq (runner, NM_SETTING_TEAM_RUNNER_LACP)) { +- runner_tx_balancer_interval = 50; ++ runner_tx_balancer_interval = NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL_DEFAULT; + runner_active = TRUE; +- runner_sys_prio = 255; ++ runner_sys_prio = NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT; + runner_min_ports = 0; + _json_delete_object_on_string_match (json, "runner", "agg_select_policy", NULL, + NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_DEFAULT); +-- +2.14.3 + + +From c34cd5e09a50b015c59491aa4506b64e30f217bc Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Fri, 12 Jan 2018 18:32:47 +0100 +Subject: [PATCH 2/2] libnm-core: team: fix runner sys_prio default value + +(cherry picked from commit 2c99eba42fdd69c7e5719f19d24aa944dfaaf666) +--- + libnm-core/nm-setting-team.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libnm-core/nm-setting-team.h b/libnm-core/nm-setting-team.h +index 452078363..d423901f6 100644 +--- a/libnm-core/nm-setting-team.h ++++ b/libnm-core/nm-setting-team.h +@@ -150,7 +150,7 @@ NMTeamLinkWatcherArpPingFlags nm_team_link_watcher_get_flags (NMTeamLinkWatcher + #define NM_SETTING_TEAM_RUNNER_DEFAULT NM_SETTING_TEAM_RUNNER_ROUNDROBIN + #define NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_DEFAULT NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_SAME_ALL + #define NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL_DEFAULT 50 +-#define NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT 255 ++#define NM_SETTING_TEAM_RUNNER_SYS_PRIO_DEFAULT 65535 + #define NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_DEFAULT NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO + + +-- +2.14.3 + diff --git a/SOURCES/0021-avoid-symbol-clash-with-json-glib-rh1535905.patch b/SOURCES/0021-avoid-symbol-clash-with-json-glib-rh1535905.patch new file mode 100644 index 0000000..b396372 --- /dev/null +++ b/SOURCES/0021-avoid-symbol-clash-with-json-glib-rh1535905.patch @@ -0,0 +1,986 @@ +From 66ae13f012a7416db839c6d6158b9c85cd9a27c5 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Tue, 26 Dec 2017 09:28:54 +0100 +Subject: [PATCH 1/6] core: load jansson on demand + +Avoid using it if the symbols clash is detected. + +(cherry picked from commit cd476e4dc922f0acfd65b02639032ee67339ad95) +--- + Makefile.am | 12 +++-- + configure.ac | 12 ++++- + libnm-core/nm-jansson.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ + libnm-core/nm-jansson.h | 46 +++++++++++++++++++ + libnm-core/nm-utils.c | 78 +++++++++++++++++++------------ + 5 files changed, 232 insertions(+), 35 deletions(-) + create mode 100644 libnm-core/nm-jansson.c + create mode 100644 libnm-core/nm-jansson.h + +diff --git a/Makefile.am b/Makefile.am +index a189262c1..69d61c4fe 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -518,6 +518,14 @@ libnm_core_lib_c_real = \ + libnm-core/nm-utils.c \ + libnm-core/nm-vpn-editor-plugin.c \ + libnm-core/nm-vpn-plugin-info.c ++ ++if WITH_JANSSON ++libnm_core_lib_h_priv += \ ++ libnm-core/nm-jansson.h ++libnm_core_lib_c_real += \ ++ libnm-core/nm-jansson.c ++endif ++ + libnm_core_lib_c_mkenums = \ + libnm-core/nm-core-enum-types.c + +@@ -598,10 +606,6 @@ libnm_core_libnm_core_la_LIBADD = \ + $(UUID_LIBS) \ + $(LIBUDEV_LIBS) + +-if WITH_JANSSON +-libnm_core_libnm_core_la_LIBADD += $(JANSSON_LIBS) +-endif +- + libnm_core_libnm_core_la_LDFLAGS = \ + $(CODE_COVERAGE_LDFLAGS) + +diff --git a/configure.ac b/configure.ac +index 05ba94971..5b5090318 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -664,7 +664,17 @@ else + if test "$have_jansson" = "no"; then + AC_MSG_ERROR([jansson is needed for team configuration validation. Use --disable-json-validation to build without it.]) + fi +- AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled]) ++ ++ AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled]) ++ ++ AC_CHECK_TOOLS(READELF, [eu-readelf readelf]) ++ JANSSON_LIBDIR=`$PKG_CONFIG --variable=libdir jansson` ++ JANSSON_SONAME=`$READELF -d $JANSSON_LIBDIR/libjansson.so |sed -n 's/.*SONAME.*\[[\([^]]*\)]]/\1/p'` ++ ++ if test "$JANSSON_SONAME" = ""; then ++ AC_MSG_ERROR(Unable to locate the Jansson library) ++ fi ++ AC_DEFINE_UNQUOTED(JANSSON_SONAME, "$JANSSON_SONAME", [Define to path to the Jansson shared library]) + fi + AM_CONDITIONAL(WITH_JANSSON, test "${enable_json_validation}" != "no") + +diff --git a/libnm-core/nm-jansson.c b/libnm-core/nm-jansson.c +new file mode 100644 +index 000000000..0f7bd3213 +--- /dev/null ++++ b/libnm-core/nm-jansson.c +@@ -0,0 +1,119 @@ ++/* ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Copyright 2017, 2018 Red Hat, Inc. ++ */ ++ ++#define _GNU_SOURCE ++#include ++ ++#include "nm-default.h" ++ ++#define NM_JAONSSON_C ++#include "nm-jansson.h" ++ ++void *_nm_jansson_json_object_iter_value; ++void *_nm_jansson_json_object_key_to_iter; ++void *_nm_jansson_json_integer; ++void *_nm_jansson_json_object_del; ++void *_nm_jansson_json_array_get; ++void *_nm_jansson_json_array_size; ++void *_nm_jansson_json_array_append_new; ++void *_nm_jansson_json_string; ++void *_nm_jansson_json_object_iter_next; ++void *_nm_jansson_json_loads; ++void *_nm_jansson_json_dumps; ++void *_nm_jansson_json_object_iter_key; ++void *_nm_jansson_json_object; ++void *_nm_jansson_json_object_get; ++void *_nm_jansson_json_array; ++void *_nm_jansson_json_false; ++void *_nm_jansson_json_delete; ++void *_nm_jansson_json_true; ++void *_nm_jansson_json_object_size; ++void *_nm_jansson_json_object_set_new; ++void *_nm_jansson_json_object_iter; ++void *_nm_jansson_json_object_iter_at; ++void *_nm_jansson_json_integer_value; ++void *_nm_jansson_json_string_value; ++ ++#define TRY_BIND_SYMBOL(symbol) \ ++ G_STMT_START { \ ++ void *sym = dlsym (handle, #symbol); \ ++ if (_nm_jansson_ ## symbol && sym != _nm_jansson_ ## symbol) \ ++ return FALSE; \ ++ _nm_jansson_ ## symbol = sym; \ ++ } G_STMT_END ++ ++static gboolean ++bind_symbols (void *handle) ++{ ++ TRY_BIND_SYMBOL (json_object_iter_value); ++ TRY_BIND_SYMBOL (json_object_key_to_iter); ++ TRY_BIND_SYMBOL (json_integer); ++ TRY_BIND_SYMBOL (json_object_del); ++ TRY_BIND_SYMBOL (json_array_get); ++ TRY_BIND_SYMBOL (json_array_size); ++ TRY_BIND_SYMBOL (json_array_append_new); ++ TRY_BIND_SYMBOL (json_string); ++ TRY_BIND_SYMBOL (json_object_iter_next); ++ TRY_BIND_SYMBOL (json_loads); ++ TRY_BIND_SYMBOL (json_dumps); ++ TRY_BIND_SYMBOL (json_object_iter_key); ++ TRY_BIND_SYMBOL (json_object); ++ TRY_BIND_SYMBOL (json_object_get); ++ TRY_BIND_SYMBOL (json_array); ++ TRY_BIND_SYMBOL (json_false); ++ TRY_BIND_SYMBOL (json_delete); ++ TRY_BIND_SYMBOL (json_true); ++ TRY_BIND_SYMBOL (json_object_size); ++ TRY_BIND_SYMBOL (json_object_set_new); ++ TRY_BIND_SYMBOL (json_object_iter); ++ TRY_BIND_SYMBOL (json_object_iter_at); ++ TRY_BIND_SYMBOL (json_integer_value); ++ TRY_BIND_SYMBOL (json_string_value); ++ ++ return TRUE; ++} ++ ++gboolean ++nm_jansson_load (void) ++{ ++ static enum { ++ UNKNOWN, ++ AVAILABLE, ++ MISSING, ++ } state = UNKNOWN; ++ void *handle; ++ ++ if (G_LIKELY (state != UNKNOWN)) ++ goto out; ++ ++ /* First just resolve the symbols to see if there's a conflict already. */ ++ if (!bind_symbols (RTLD_DEFAULT)) ++ goto out; ++ ++ handle = dlopen (JANSSON_SONAME, RTLD_LAZY | RTLD_LOCAL | RTLD_NODELETE | RTLD_DEEPBIND); ++ if (!handle) ++ goto out; ++ ++ /* Now do the actual binding. */ ++ if (!bind_symbols (handle)) ++ goto out; ++ ++ state = AVAILABLE; ++out: ++ return state == AVAILABLE; ++} +diff --git a/libnm-core/nm-jansson.h b/libnm-core/nm-jansson.h +new file mode 100644 +index 000000000..043986878 +--- /dev/null ++++ b/libnm-core/nm-jansson.h +@@ -0,0 +1,46 @@ ++/* ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Copyright 2017, 2018 Red Hat, Inc. ++ */ ++ ++gboolean nm_jansson_load (void); ++ ++#ifndef NM_JAONSSON_C ++#define json_object_iter_value (*_nm_jansson_json_object_iter_value) ++#define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) ++#define json_integer (*_nm_jansson_json_integer) ++#define json_object_del (*_nm_jansson_json_object_del) ++#define json_array_get (*_nm_jansson_json_array_get) ++#define json_array_size (*_nm_jansson_json_array_size) ++#define json_array_append_new (*_nm_jansson_json_array_append_new) ++#define json_string (*_nm_jansson_json_string) ++#define json_object_iter_next (*_nm_jansson_json_object_iter_next) ++#define json_loads (*_nm_jansson_json_loads) ++#define json_dumps (*_nm_jansson_json_dumps) ++#define json_object_iter_key (*_nm_jansson_json_object_iter_key) ++#define json_object (*_nm_jansson_json_object) ++#define json_object_get (*_nm_jansson_json_object_get) ++#define json_array (*_nm_jansson_json_array) ++#define json_false (*_nm_jansson_json_false) ++#define json_delete (*_nm_jansson_json_delete) ++#define json_true (*_nm_jansson_json_true) ++#define json_object_size (*_nm_jansson_json_object_size) ++#define json_object_set_new (*_nm_jansson_json_object_set_new) ++#define json_object_iter (*_nm_jansson_json_object_iter) ++#define json_object_iter_at (*_nm_jansson_json_object_iter_at) ++#define json_integer_value (*_nm_jansson_json_integer_value) ++#define json_string_value (*_nm_jansson_json_string_value) ++#endif +diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c +index ce3536c84..8d7bf08f9 100644 +--- a/libnm-core/nm-utils.c ++++ b/libnm-core/nm-utils.c +@@ -36,6 +36,7 @@ + #include + + #if WITH_JANSSON ++#include "nm-jansson.h" + #include + #endif + +@@ -4891,6 +4892,41 @@ const char **nm_utils_enum_get_values (GType type, gint from, gint to) + + /*****************************************************************************/ + ++static gboolean ++_nm_utils_is_json_object_no_validation (const char *str, GError **error) ++{ ++ if (str) { ++ /* libjansson also requires only utf-8 encoding. */ ++ if (!g_utf8_validate (str, -1, NULL)) { ++ g_set_error_literal (error, ++ NM_CONNECTION_ERROR, ++ NM_CONNECTION_ERROR_INVALID_PROPERTY, ++ _("not valid utf-8")); ++ return FALSE; ++ } ++ while (g_ascii_isspace (str[0])) ++ str++; ++ } ++ ++ /* do some very basic validation to see if this might be a JSON object. */ ++ if (str[0] == '{') { ++ gsize l; ++ ++ l = strlen (str) - 1; ++ while (l > 0 && g_ascii_isspace (str[l])) ++ l--; ++ ++ if (str[l] == '}') ++ return TRUE; ++ } ++ ++ g_set_error_literal (error, ++ NM_CONNECTION_ERROR, ++ NM_CONNECTION_ERROR_INVALID_PROPERTY, ++ _("is not a JSON object")); ++ return FALSE; ++} ++ + #if WITH_JANSSON + + /* Added in Jansson v2.3 (released Jan 27 2012) */ +@@ -5363,6 +5399,9 @@ nm_utils_is_json_object (const char *str, GError **error) + return FALSE; + } + ++ if (!nm_jansson_load ()) ++ return _nm_utils_is_json_object_no_validation (str, error); ++ + json = json_loads (str, JSON_REJECT_DUPLICATES, &jerror); + if (!json) { + g_set_error (error, +@@ -5413,6 +5452,8 @@ _nm_utils_team_config_equal (const char *conf1, + + if (nm_streq0 (conf1, conf2)) + return TRUE; ++ else if (!nm_jansson_load ()) ++ return FALSE; + + /* A NULL configuration is equivalent to default value '{}' */ + json1 = json_loads (conf1 ?: "{}", JSON_REJECT_DUPLICATES, &jerror); +@@ -5470,6 +5511,9 @@ _nm_utils_team_config_get (const char *conf, + if (!key) + return NULL; + ++ if (!nm_jansson_load ()) ++ return NULL; ++ + json = json_loads (conf ?: "{}", JSON_REJECT_DUPLICATES, &jerror); + + /* Invalid json in conf */ +@@ -5577,6 +5621,9 @@ _nm_utils_team_config_set (char **conf, + + g_return_val_if_fail (key, FALSE); + ++ if (!nm_jansson_load ()) ++ return FALSE; ++ + json = json_loads (*conf?: "{}", JSON_REJECT_DUPLICATES, &jerror); + if (!json) + return FALSE; +@@ -5694,19 +5741,6 @@ nm_utils_is_json_object (const char *str, GError **error) + { + g_return_val_if_fail (!error || !*error, FALSE); + +- if (str) { +- /* libjansson also requires only utf-8 encoding. */ +- if (!g_utf8_validate (str, -1, NULL)) { +- g_set_error_literal (error, +- NM_CONNECTION_ERROR, +- NM_CONNECTION_ERROR_INVALID_PROPERTY, +- _("not valid utf-8")); +- return FALSE; +- } +- while (g_ascii_isspace (str[0])) +- str++; +- } +- + if (!str || !str[0]) { + g_set_error_literal (error, + NM_CONNECTION_ERROR, +@@ -5715,23 +5749,7 @@ nm_utils_is_json_object (const char *str, GError **error) + return FALSE; + } + +- /* do some very basic validation to see if this might be a JSON object. */ +- if (str[0] == '{') { +- gsize l; +- +- l = strlen (str) - 1; +- while (l > 0 && g_ascii_isspace (str[l])) +- l--; +- +- if (str[l] == '}') +- return TRUE; +- } +- +- g_set_error_literal (error, +- NM_CONNECTION_ERROR, +- NM_CONNECTION_ERROR_INVALID_PROPERTY, +- _("is not a JSON object")); +- return FALSE; ++ return _nm_utils_is_json_object_no_validation (str, error); + } + + gboolean +-- +2.14.3 + + +From 75dfbfcef40c44b2a04779351d0974b5e36818c2 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 9 Jan 2018 07:10:24 +0100 +Subject: [PATCH 2/6] libnm/trivial: don't use non-leading tabs + +(cherry picked from commit 950a14128bc249626af0770f0003cf83d491bd54) +--- + libnm-core/nm-jansson.h | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +diff --git a/libnm-core/nm-jansson.h b/libnm-core/nm-jansson.h +index 043986878..e3718d93c 100644 +--- a/libnm-core/nm-jansson.h ++++ b/libnm-core/nm-jansson.h +@@ -19,28 +19,28 @@ + gboolean nm_jansson_load (void); + + #ifndef NM_JAONSSON_C +-#define json_object_iter_value (*_nm_jansson_json_object_iter_value) +-#define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) +-#define json_integer (*_nm_jansson_json_integer) +-#define json_object_del (*_nm_jansson_json_object_del) +-#define json_array_get (*_nm_jansson_json_array_get) +-#define json_array_size (*_nm_jansson_json_array_size) +-#define json_array_append_new (*_nm_jansson_json_array_append_new) +-#define json_string (*_nm_jansson_json_string) +-#define json_object_iter_next (*_nm_jansson_json_object_iter_next) +-#define json_loads (*_nm_jansson_json_loads) +-#define json_dumps (*_nm_jansson_json_dumps) +-#define json_object_iter_key (*_nm_jansson_json_object_iter_key) +-#define json_object (*_nm_jansson_json_object) +-#define json_object_get (*_nm_jansson_json_object_get) +-#define json_array (*_nm_jansson_json_array) +-#define json_false (*_nm_jansson_json_false) +-#define json_delete (*_nm_jansson_json_delete) +-#define json_true (*_nm_jansson_json_true) +-#define json_object_size (*_nm_jansson_json_object_size) +-#define json_object_set_new (*_nm_jansson_json_object_set_new) +-#define json_object_iter (*_nm_jansson_json_object_iter) +-#define json_object_iter_at (*_nm_jansson_json_object_iter_at) +-#define json_integer_value (*_nm_jansson_json_integer_value) +-#define json_string_value (*_nm_jansson_json_string_value) ++#define json_object_iter_value (*_nm_jansson_json_object_iter_value) ++#define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) ++#define json_integer (*_nm_jansson_json_integer) ++#define json_object_del (*_nm_jansson_json_object_del) ++#define json_array_get (*_nm_jansson_json_array_get) ++#define json_array_size (*_nm_jansson_json_array_size) ++#define json_array_append_new (*_nm_jansson_json_array_append_new) ++#define json_string (*_nm_jansson_json_string) ++#define json_object_iter_next (*_nm_jansson_json_object_iter_next) ++#define json_loads (*_nm_jansson_json_loads) ++#define json_dumps (*_nm_jansson_json_dumps) ++#define json_object_iter_key (*_nm_jansson_json_object_iter_key) ++#define json_object (*_nm_jansson_json_object) ++#define json_object_get (*_nm_jansson_json_object_get) ++#define json_array (*_nm_jansson_json_array) ++#define json_false (*_nm_jansson_json_false) ++#define json_delete (*_nm_jansson_json_delete) ++#define json_true (*_nm_jansson_json_true) ++#define json_object_size (*_nm_jansson_json_object_size) ++#define json_object_set_new (*_nm_jansson_json_object_set_new) ++#define json_object_iter (*_nm_jansson_json_object_iter) ++#define json_object_iter_at (*_nm_jansson_json_object_iter_at) ++#define json_integer_value (*_nm_jansson_json_integer_value) ++#define json_string_value (*_nm_jansson_json_string_value) + #endif +-- +2.14.3 + + +From bbcb9ebefcffab302d192dcd60c084c2698dff24 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 9 Jan 2018 06:20:18 +0100 +Subject: [PATCH 3/6] libnm: rename "libnm-core/nm-jansson.h" to + "libnm-core/nm-json.h" + +We already have "shared/nm-utils/nm-jansson.h". Avoid reusing the same file name. + +(cherry picked from commit b6b6baa7735e09a95fa9504e9a9746cdc4e970e6) +--- + Makefile.am | 4 +- + libnm-core/nm-jansson.c | 119 ------------------------------------------------ + libnm-core/nm-jansson.h | 46 ------------------- + libnm-core/nm-json.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ + libnm-core/nm-json.h | 46 +++++++++++++++++++ + libnm-core/nm-utils.c | 2 +- + 6 files changed, 168 insertions(+), 168 deletions(-) + delete mode 100644 libnm-core/nm-jansson.c + delete mode 100644 libnm-core/nm-jansson.h + create mode 100644 libnm-core/nm-json.c + create mode 100644 libnm-core/nm-json.h + +diff --git a/Makefile.am b/Makefile.am +index 69d61c4fe..639921d50 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -521,9 +521,9 @@ libnm_core_lib_c_real = \ + + if WITH_JANSSON + libnm_core_lib_h_priv += \ +- libnm-core/nm-jansson.h ++ libnm-core/nm-json.h + libnm_core_lib_c_real += \ +- libnm-core/nm-jansson.c ++ libnm-core/nm-json.c + endif + + libnm_core_lib_c_mkenums = \ +diff --git a/libnm-core/nm-jansson.c b/libnm-core/nm-jansson.c +deleted file mode 100644 +index 0f7bd3213..000000000 +--- a/libnm-core/nm-jansson.c ++++ /dev/null +@@ -1,119 +0,0 @@ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License along +- * with this program; if not, write to the Free Software Foundation, Inc., +- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +- * +- * Copyright 2017, 2018 Red Hat, Inc. +- */ +- +-#define _GNU_SOURCE +-#include +- +-#include "nm-default.h" +- +-#define NM_JAONSSON_C +-#include "nm-jansson.h" +- +-void *_nm_jansson_json_object_iter_value; +-void *_nm_jansson_json_object_key_to_iter; +-void *_nm_jansson_json_integer; +-void *_nm_jansson_json_object_del; +-void *_nm_jansson_json_array_get; +-void *_nm_jansson_json_array_size; +-void *_nm_jansson_json_array_append_new; +-void *_nm_jansson_json_string; +-void *_nm_jansson_json_object_iter_next; +-void *_nm_jansson_json_loads; +-void *_nm_jansson_json_dumps; +-void *_nm_jansson_json_object_iter_key; +-void *_nm_jansson_json_object; +-void *_nm_jansson_json_object_get; +-void *_nm_jansson_json_array; +-void *_nm_jansson_json_false; +-void *_nm_jansson_json_delete; +-void *_nm_jansson_json_true; +-void *_nm_jansson_json_object_size; +-void *_nm_jansson_json_object_set_new; +-void *_nm_jansson_json_object_iter; +-void *_nm_jansson_json_object_iter_at; +-void *_nm_jansson_json_integer_value; +-void *_nm_jansson_json_string_value; +- +-#define TRY_BIND_SYMBOL(symbol) \ +- G_STMT_START { \ +- void *sym = dlsym (handle, #symbol); \ +- if (_nm_jansson_ ## symbol && sym != _nm_jansson_ ## symbol) \ +- return FALSE; \ +- _nm_jansson_ ## symbol = sym; \ +- } G_STMT_END +- +-static gboolean +-bind_symbols (void *handle) +-{ +- TRY_BIND_SYMBOL (json_object_iter_value); +- TRY_BIND_SYMBOL (json_object_key_to_iter); +- TRY_BIND_SYMBOL (json_integer); +- TRY_BIND_SYMBOL (json_object_del); +- TRY_BIND_SYMBOL (json_array_get); +- TRY_BIND_SYMBOL (json_array_size); +- TRY_BIND_SYMBOL (json_array_append_new); +- TRY_BIND_SYMBOL (json_string); +- TRY_BIND_SYMBOL (json_object_iter_next); +- TRY_BIND_SYMBOL (json_loads); +- TRY_BIND_SYMBOL (json_dumps); +- TRY_BIND_SYMBOL (json_object_iter_key); +- TRY_BIND_SYMBOL (json_object); +- TRY_BIND_SYMBOL (json_object_get); +- TRY_BIND_SYMBOL (json_array); +- TRY_BIND_SYMBOL (json_false); +- TRY_BIND_SYMBOL (json_delete); +- TRY_BIND_SYMBOL (json_true); +- TRY_BIND_SYMBOL (json_object_size); +- TRY_BIND_SYMBOL (json_object_set_new); +- TRY_BIND_SYMBOL (json_object_iter); +- TRY_BIND_SYMBOL (json_object_iter_at); +- TRY_BIND_SYMBOL (json_integer_value); +- TRY_BIND_SYMBOL (json_string_value); +- +- return TRUE; +-} +- +-gboolean +-nm_jansson_load (void) +-{ +- static enum { +- UNKNOWN, +- AVAILABLE, +- MISSING, +- } state = UNKNOWN; +- void *handle; +- +- if (G_LIKELY (state != UNKNOWN)) +- goto out; +- +- /* First just resolve the symbols to see if there's a conflict already. */ +- if (!bind_symbols (RTLD_DEFAULT)) +- goto out; +- +- handle = dlopen (JANSSON_SONAME, RTLD_LAZY | RTLD_LOCAL | RTLD_NODELETE | RTLD_DEEPBIND); +- if (!handle) +- goto out; +- +- /* Now do the actual binding. */ +- if (!bind_symbols (handle)) +- goto out; +- +- state = AVAILABLE; +-out: +- return state == AVAILABLE; +-} +diff --git a/libnm-core/nm-jansson.h b/libnm-core/nm-jansson.h +deleted file mode 100644 +index e3718d93c..000000000 +--- a/libnm-core/nm-jansson.h ++++ /dev/null +@@ -1,46 +0,0 @@ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License along +- * with this program; if not, write to the Free Software Foundation, Inc., +- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +- * +- * Copyright 2017, 2018 Red Hat, Inc. +- */ +- +-gboolean nm_jansson_load (void); +- +-#ifndef NM_JAONSSON_C +-#define json_object_iter_value (*_nm_jansson_json_object_iter_value) +-#define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) +-#define json_integer (*_nm_jansson_json_integer) +-#define json_object_del (*_nm_jansson_json_object_del) +-#define json_array_get (*_nm_jansson_json_array_get) +-#define json_array_size (*_nm_jansson_json_array_size) +-#define json_array_append_new (*_nm_jansson_json_array_append_new) +-#define json_string (*_nm_jansson_json_string) +-#define json_object_iter_next (*_nm_jansson_json_object_iter_next) +-#define json_loads (*_nm_jansson_json_loads) +-#define json_dumps (*_nm_jansson_json_dumps) +-#define json_object_iter_key (*_nm_jansson_json_object_iter_key) +-#define json_object (*_nm_jansson_json_object) +-#define json_object_get (*_nm_jansson_json_object_get) +-#define json_array (*_nm_jansson_json_array) +-#define json_false (*_nm_jansson_json_false) +-#define json_delete (*_nm_jansson_json_delete) +-#define json_true (*_nm_jansson_json_true) +-#define json_object_size (*_nm_jansson_json_object_size) +-#define json_object_set_new (*_nm_jansson_json_object_set_new) +-#define json_object_iter (*_nm_jansson_json_object_iter) +-#define json_object_iter_at (*_nm_jansson_json_object_iter_at) +-#define json_integer_value (*_nm_jansson_json_integer_value) +-#define json_string_value (*_nm_jansson_json_string_value) +-#endif +diff --git a/libnm-core/nm-json.c b/libnm-core/nm-json.c +new file mode 100644 +index 000000000..1f7d4398a +--- /dev/null ++++ b/libnm-core/nm-json.c +@@ -0,0 +1,119 @@ ++/* ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Copyright 2017, 2018 Red Hat, Inc. ++ */ ++ ++#define _GNU_SOURCE ++#include ++ ++#include "nm-default.h" ++ ++#define NM_JAONSSON_C ++#include "nm-json.h" ++ ++void *_nm_jansson_json_object_iter_value; ++void *_nm_jansson_json_object_key_to_iter; ++void *_nm_jansson_json_integer; ++void *_nm_jansson_json_object_del; ++void *_nm_jansson_json_array_get; ++void *_nm_jansson_json_array_size; ++void *_nm_jansson_json_array_append_new; ++void *_nm_jansson_json_string; ++void *_nm_jansson_json_object_iter_next; ++void *_nm_jansson_json_loads; ++void *_nm_jansson_json_dumps; ++void *_nm_jansson_json_object_iter_key; ++void *_nm_jansson_json_object; ++void *_nm_jansson_json_object_get; ++void *_nm_jansson_json_array; ++void *_nm_jansson_json_false; ++void *_nm_jansson_json_delete; ++void *_nm_jansson_json_true; ++void *_nm_jansson_json_object_size; ++void *_nm_jansson_json_object_set_new; ++void *_nm_jansson_json_object_iter; ++void *_nm_jansson_json_object_iter_at; ++void *_nm_jansson_json_integer_value; ++void *_nm_jansson_json_string_value; ++ ++#define TRY_BIND_SYMBOL(symbol) \ ++ G_STMT_START { \ ++ void *sym = dlsym (handle, #symbol); \ ++ if (_nm_jansson_ ## symbol && sym != _nm_jansson_ ## symbol) \ ++ return FALSE; \ ++ _nm_jansson_ ## symbol = sym; \ ++ } G_STMT_END ++ ++static gboolean ++bind_symbols (void *handle) ++{ ++ TRY_BIND_SYMBOL (json_object_iter_value); ++ TRY_BIND_SYMBOL (json_object_key_to_iter); ++ TRY_BIND_SYMBOL (json_integer); ++ TRY_BIND_SYMBOL (json_object_del); ++ TRY_BIND_SYMBOL (json_array_get); ++ TRY_BIND_SYMBOL (json_array_size); ++ TRY_BIND_SYMBOL (json_array_append_new); ++ TRY_BIND_SYMBOL (json_string); ++ TRY_BIND_SYMBOL (json_object_iter_next); ++ TRY_BIND_SYMBOL (json_loads); ++ TRY_BIND_SYMBOL (json_dumps); ++ TRY_BIND_SYMBOL (json_object_iter_key); ++ TRY_BIND_SYMBOL (json_object); ++ TRY_BIND_SYMBOL (json_object_get); ++ TRY_BIND_SYMBOL (json_array); ++ TRY_BIND_SYMBOL (json_false); ++ TRY_BIND_SYMBOL (json_delete); ++ TRY_BIND_SYMBOL (json_true); ++ TRY_BIND_SYMBOL (json_object_size); ++ TRY_BIND_SYMBOL (json_object_set_new); ++ TRY_BIND_SYMBOL (json_object_iter); ++ TRY_BIND_SYMBOL (json_object_iter_at); ++ TRY_BIND_SYMBOL (json_integer_value); ++ TRY_BIND_SYMBOL (json_string_value); ++ ++ return TRUE; ++} ++ ++gboolean ++nm_jansson_load (void) ++{ ++ static enum { ++ UNKNOWN, ++ AVAILABLE, ++ MISSING, ++ } state = UNKNOWN; ++ void *handle; ++ ++ if (G_LIKELY (state != UNKNOWN)) ++ goto out; ++ ++ /* First just resolve the symbols to see if there's a conflict already. */ ++ if (!bind_symbols (RTLD_DEFAULT)) ++ goto out; ++ ++ handle = dlopen (JANSSON_SONAME, RTLD_LAZY | RTLD_LOCAL | RTLD_NODELETE | RTLD_DEEPBIND); ++ if (!handle) ++ goto out; ++ ++ /* Now do the actual binding. */ ++ if (!bind_symbols (handle)) ++ goto out; ++ ++ state = AVAILABLE; ++out: ++ return state == AVAILABLE; ++} +diff --git a/libnm-core/nm-json.h b/libnm-core/nm-json.h +new file mode 100644 +index 000000000..e3718d93c +--- /dev/null ++++ b/libnm-core/nm-json.h +@@ -0,0 +1,46 @@ ++/* ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License along ++ * with this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ * ++ * Copyright 2017, 2018 Red Hat, Inc. ++ */ ++ ++gboolean nm_jansson_load (void); ++ ++#ifndef NM_JAONSSON_C ++#define json_object_iter_value (*_nm_jansson_json_object_iter_value) ++#define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) ++#define json_integer (*_nm_jansson_json_integer) ++#define json_object_del (*_nm_jansson_json_object_del) ++#define json_array_get (*_nm_jansson_json_array_get) ++#define json_array_size (*_nm_jansson_json_array_size) ++#define json_array_append_new (*_nm_jansson_json_array_append_new) ++#define json_string (*_nm_jansson_json_string) ++#define json_object_iter_next (*_nm_jansson_json_object_iter_next) ++#define json_loads (*_nm_jansson_json_loads) ++#define json_dumps (*_nm_jansson_json_dumps) ++#define json_object_iter_key (*_nm_jansson_json_object_iter_key) ++#define json_object (*_nm_jansson_json_object) ++#define json_object_get (*_nm_jansson_json_object_get) ++#define json_array (*_nm_jansson_json_array) ++#define json_false (*_nm_jansson_json_false) ++#define json_delete (*_nm_jansson_json_delete) ++#define json_true (*_nm_jansson_json_true) ++#define json_object_size (*_nm_jansson_json_object_size) ++#define json_object_set_new (*_nm_jansson_json_object_set_new) ++#define json_object_iter (*_nm_jansson_json_object_iter) ++#define json_object_iter_at (*_nm_jansson_json_object_iter_at) ++#define json_integer_value (*_nm_jansson_json_integer_value) ++#define json_string_value (*_nm_jansson_json_string_value) ++#endif +diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c +index 8d7bf08f9..ebbbfd3a4 100644 +--- a/libnm-core/nm-utils.c ++++ b/libnm-core/nm-utils.c +@@ -36,7 +36,7 @@ + #include + + #if WITH_JANSSON +-#include "nm-jansson.h" ++#include "nm-json.h" + #include + #endif + +-- +2.14.3 + + +From 0aa9273d334afec1d54878587b4f7fb9e2410f92 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 9 Jan 2018 07:15:40 +0100 +Subject: [PATCH 4/6] libnm: fix spelling for NM_JAONSSON_C define + +(cherry picked from commit 288877848067c08abfd82d3ee72765f89ec79968) +--- + libnm-core/nm-json.c | 2 +- + libnm-core/nm-json.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libnm-core/nm-json.c b/libnm-core/nm-json.c +index 1f7d4398a..d58898ce2 100644 +--- a/libnm-core/nm-json.c ++++ b/libnm-core/nm-json.c +@@ -21,7 +21,7 @@ + + #include "nm-default.h" + +-#define NM_JAONSSON_C ++#define NM_JANSSON_C + #include "nm-json.h" + + void *_nm_jansson_json_object_iter_value; +diff --git a/libnm-core/nm-json.h b/libnm-core/nm-json.h +index e3718d93c..50b52e4f2 100644 +--- a/libnm-core/nm-json.h ++++ b/libnm-core/nm-json.h +@@ -18,7 +18,7 @@ + + gboolean nm_jansson_load (void); + +-#ifndef NM_JAONSSON_C ++#ifndef NM_JANSSON_C + #define json_object_iter_value (*_nm_jansson_json_object_iter_value) + #define json_object_key_to_iter (*_nm_jansson_json_object_key_to_iter) + #define json_integer (*_nm_jansson_json_integer) +-- +2.14.3 + + +From 5269978e379c3a03cb5b159beef747329a645446 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 9 Jan 2018 07:17:06 +0100 +Subject: [PATCH 5/6] libnm: add include guard to nm-json.h + +(cherry picked from commit ee56c9250fc88eb1983bc587dc5052a70cb88e0f) +--- + libnm-core/nm-json.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libnm-core/nm-json.h b/libnm-core/nm-json.h +index 50b52e4f2..513b8d369 100644 +--- a/libnm-core/nm-json.h ++++ b/libnm-core/nm-json.h +@@ -15,6 +15,8 @@ + * + * Copyright 2017, 2018 Red Hat, Inc. + */ ++#ifndef __NM_JSON_H__ ++#define __NM_JSON_H__ + + gboolean nm_jansson_load (void); + +@@ -44,3 +46,5 @@ gboolean nm_jansson_load (void); + #define json_integer_value (*_nm_jansson_json_integer_value) + #define json_string_value (*_nm_jansson_json_string_value) + #endif ++ ++#endif /* __NM_JSON_H__ */ +-- +2.14.3 + + +From ec630dc256b3e9cb80cd3ca9872c5a405ae21646 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Tue, 9 Jan 2018 07:30:31 +0100 +Subject: [PATCH 6/6] libnm: cleanup include in "libnm-core/nm-json.c" + +We already define _GNU_SOURCE in "config.h", depending +on configure checks. + +Also, we always should first include "config.h" (which means +to first include "nm-default.h"). + +Also, we don't need the entire , suffices. + +(cherry picked from commit 84576ce86155e195985a1924c90782eb9e2e5beb) +--- + libnm-core/nm-json.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/libnm-core/nm-json.c b/libnm-core/nm-json.c +index d58898ce2..f9042b1f3 100644 +--- a/libnm-core/nm-json.c ++++ b/libnm-core/nm-json.c +@@ -16,14 +16,13 @@ + * Copyright 2017, 2018 Red Hat, Inc. + */ + +-#define _GNU_SOURCE +-#include +- + #include "nm-default.h" + + #define NM_JANSSON_C + #include "nm-json.h" + ++#include ++ + void *_nm_jansson_json_object_iter_value; + void *_nm_jansson_json_object_key_to_iter; + void *_nm_jansson_json_integer; +-- +2.14.3 + diff --git a/SOURCES/0021-bond-crash-mode-rh1459580.patch b/SOURCES/0021-bond-crash-mode-rh1459580.patch deleted file mode 100644 index 513b970..0000000 --- a/SOURCES/0021-bond-crash-mode-rh1459580.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 27b3757b5beecc9fcd98ce3a1acbc50431c204cb Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Wed, 7 Jun 2017 18:51:41 +0200 -Subject: [PATCH 1/1] bond: check for NULL bond mode value in - update_connection() - -Don't crash if the bond mode can't be read from sysfs - for example -when the interface disappears. The generated connection will be bogus, -but at that point it doesn't matter because the in-memory connection -will be destroyed. - -Fixes: 056a973a4fdb68abe8bc7bfc5f31250345d71f21 - -https://bugzilla.redhat.com/show_bug.cgi?id=1459580 -(cherry picked from commit 5600a27c2aa1a69c1c72422937bfd4401217046e) -(cherry picked from commit a3a792dd2253085933ca03e3cb61c37a44a6d304) ---- - src/devices/nm-device-bond.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c -index c8748fe..451a4f0 100644 ---- a/src/devices/nm-device-bond.c -+++ b/src/devices/nm-device-bond.c -@@ -177,7 +177,7 @@ update_connection (NMDevice *device, NMConnection *connection) - *p = '\0'; - } - -- if (nm_streq (*options, NM_SETTING_BOND_OPTION_MODE)) -+ if (value && nm_streq (*options, NM_SETTING_BOND_OPTION_MODE)) - mode = _nm_setting_bond_mode_from_string (value); - - if (!_nm_setting_bond_option_supported (*options, mode)) --- -2.9.4 - diff --git a/SOURCES/0022-connectivity-ip-iface-check-rh1459932.patch b/SOURCES/0022-connectivity-ip-iface-check-rh1459932.patch deleted file mode 100644 index c959c89..0000000 --- a/SOURCES/0022-connectivity-ip-iface-check-rh1459932.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 1e8d7050a7d115faf78c1a7531195358c9919bf0 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Thu, 8 Jun 2017 00:23:05 +0200 -Subject: [PATCH 1/1] device: check connectivity on the IP interface - -curl must bind to the interface that has IP configuration, not the -underlying device. Without this commit, connectivity check fails on -certain connection types (PPPoE, WWAN). - -Fixes: 9d43869e473b47542520c807dace93a6f9520964 -(cherry picked from commit c66995ad4ddbe44cbbb4d4d56a48420be6d483cf) -(cherry picked from commit dc1c8c22cc8034fe4c257d43b3c31196e9899326) ---- - src/devices/nm-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index f5eb71d..a804771 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -1858,7 +1858,7 @@ nm_device_check_connectivity (NMDevice *self, - - /* Kick off a real connectivity check. */ - nm_connectivity_check_async (nm_connectivity_get (), -- nm_device_get_iface (self), -+ nm_device_get_ip_iface (self), - concheck_cb, - data); - return; --- -2.9.4 - diff --git a/SOURCES/0022-team-add-random-runner-rh1538699.patch b/SOURCES/0022-team-add-random-runner-rh1538699.patch new file mode 100644 index 0000000..a3b43cb --- /dev/null +++ b/SOURCES/0022-team-add-random-runner-rh1538699.patch @@ -0,0 +1,85 @@ +From 10760b100c71d637cad76eef4bed59c1d63679c2 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Mon, 5 Feb 2018 15:24:36 +0100 +Subject: [PATCH] libnm-core: team: add support to runner "random" + +https://bugzilla.redhat.com/show_bug.cgi?id=1538699 +(cherry picked from commit 31d9a9de14dc7e529763e3210337bb6dd628a8a3) +--- + clients/common/nm-meta-setting-desc.c | 1 + + libnm-core/nm-setting-team.c | 1 + + libnm-core/nm-setting-team.h | 1 + + libnm-core/tests/test-setting.c | 14 ++++++++++++++ + 4 files changed, 17 insertions(+) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index 46b06fd40..d829fa7d4 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -6594,6 +6594,7 @@ static const NMMetaPropertyInfo *const property_infos_TEAM[] = { + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .values_static = VALUES_STATIC (NM_SETTING_TEAM_RUNNER_BROADCAST, + NM_SETTING_TEAM_RUNNER_ROUNDROBIN, ++ NM_SETTING_TEAM_RUNNER_RANDOM, + NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP, + NM_SETTING_TEAM_RUNNER_LOADBALANCE, + NM_SETTING_TEAM_RUNNER_LACP), +diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c +index 60bdf5f6b..1db2428d9 100644 +--- a/libnm-core/nm-setting-team.c ++++ b/libnm-core/nm-setting-team.c +@@ -1171,6 +1171,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) + if ( priv->runner + && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_BROADCAST) + && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_ROUNDROBIN) ++ && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_RANDOM) + && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP) + && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_LOADBALANCE) + && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_LACP)) { +diff --git a/libnm-core/nm-setting-team.h b/libnm-core/nm-setting-team.h +index d423901f6..8e5178a45 100644 +--- a/libnm-core/nm-setting-team.h ++++ b/libnm-core/nm-setting-team.h +@@ -131,6 +131,7 @@ NMTeamLinkWatcherArpPingFlags nm_team_link_watcher_get_flags (NMTeamLinkWatcher + + #define NM_SETTING_TEAM_RUNNER_BROADCAST "broadcast" + #define NM_SETTING_TEAM_RUNNER_ROUNDROBIN "roundrobin" ++#define NM_SETTING_TEAM_RUNNER_RANDOM "random" + #define NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP "activebackup" + #define NM_SETTING_TEAM_RUNNER_LOADBALANCE "loadbalance" + #define NM_SETTING_TEAM_RUNNER_LACP "lacp" +diff --git a/libnm-core/tests/test-setting.c b/libnm-core/tests/test-setting.c +index efdcee258..a7282f91b 100644 +--- a/libnm-core/tests/test-setting.c ++++ b/libnm-core/tests/test-setting.c +@@ -967,6 +967,18 @@ test_runner_broadcast_sync_from_config (void) + NULL); + } + ++static void ++test_runner_random_sync_from_config (void) ++{ ++ _test_team_config_sync ("{\"runner\": {\"name\": \"random\"}}", ++ 0, 0, 0, 0, ++ NM_SETTING_TEAM_RUNNER_RANDOM, ++ NULL, ++ NULL, NULL, -1, ++ FALSE, FALSE, -1, -1, NULL, ++ NULL); ++} ++ + static void + test_runner_activebackup_sync_from_config (void) + { +@@ -1603,6 +1615,8 @@ main (int argc, char **argv) + test_runner_roundrobin_sync_from_config); + g_test_add_func ("/libnm/settings/team/sync_runner_from_config_broadcast", + test_runner_broadcast_sync_from_config); ++ g_test_add_func ("/libnm/settings/team/sync_runner_from_config_random", ++ test_runner_random_sync_from_config); + g_test_add_func ("/libnm/settings/team/sync_runner_from_config_activebackup", + test_runner_activebackup_sync_from_config); + g_test_add_func ("/libnm/settings/team/sync_runner_from_config_loadbalance", +-- +2.14.3 + diff --git a/SOURCES/0023-persist-nm-owned-in-device-state-rh1376199.patch b/SOURCES/0023-persist-nm-owned-in-device-state-rh1376199.patch deleted file mode 100644 index e5720e6..0000000 --- a/SOURCES/0023-persist-nm-owned-in-device-state-rh1376199.patch +++ /dev/null @@ -1,510 +0,0 @@ -From ffa247f2a2a70e9484ddb46c8dc66a1a7183ef55 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Wed, 31 May 2017 16:42:05 +0200 -Subject: [PATCH 1/5] device: rename priv->is_nm_owned to priv->nm_owned - -Only a matter of taste, but nm_device_get_is_nm_owned() sounds -strange. - -(cherry picked from commit 8cce037bf8078b7dbb8e3abc45f84ae6f7e9299c) -(cherry picked from commit 84273a35162aaef50c9b9a4f1b565326989d370a) ---- - src/devices/nm-device.c | 14 +++++++------- - src/devices/nm-device.h | 2 +- - src/nm-manager.c | 2 +- - 3 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index f5eb71d..746117d 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -262,7 +262,7 @@ typedef struct _NMDevicePrivate { - - NMUtilsStableType current_stable_id_type:3; - -- bool is_nm_owned:1; /* whether the device is a device owned and created by NM */ -+ bool nm_owned:1; /* whether the device is a device owned and created by NM */ - - GHashTable * available_connections; - char * hw_addr; -@@ -2069,7 +2069,7 @@ nm_device_master_release_one_slave (NMDevice *self, NMDevice *slave, gboolean co - static gboolean - can_unmanaged_external_down (NMDevice *self) - { -- return !NM_DEVICE_GET_PRIVATE (self)->is_nm_owned -+ return !NM_DEVICE_GET_PRIVATE (self)->nm_owned - && nm_device_is_software (self); - } - -@@ -2809,9 +2809,9 @@ nm_device_create_and_realize (NMDevice *self, - const NMPlatformLink *plink = NULL; - - /* Must be set before device is realized */ -- priv->is_nm_owned = !nm_platform_link_get_by_ifname (nm_device_get_platform (self), priv->iface); -+ priv->nm_owned = !nm_platform_link_get_by_ifname (nm_device_get_platform (self), priv->iface); - -- _LOGD (LOGD_DEVICE, "create (is %snm-owned)", priv->is_nm_owned ? "" : "not "); -+ _LOGD (LOGD_DEVICE, "create (is %snm-owned)", priv->nm_owned ? "" : "not "); - - /* Create any resources the device needs */ - if (NM_DEVICE_GET_CLASS (self)->create_and_realize) { -@@ -8682,9 +8682,9 @@ _update_ip4_address (NMDevice *self) - } - - gboolean --nm_device_get_is_nm_owned (NMDevice *self) -+nm_device_is_nm_owned (NMDevice *self) - { -- return NM_DEVICE_GET_PRIVATE (self)->is_nm_owned; -+ return NM_DEVICE_GET_PRIVATE (self)->nm_owned; - } - - /* -@@ -8745,7 +8745,7 @@ delete_on_deactivate_check_and_schedule (NMDevice *self, int ifindex) - - if (ifindex <= 0) - return; -- if (!priv->is_nm_owned) -+ if (!priv->nm_owned) - return; - if (priv->queued_act_request) - return; -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index 5e6abb4..27f5018 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -605,7 +605,7 @@ void nm_device_set_unmanaged_by_user_settings (NMDevice *self); - void nm_device_set_unmanaged_by_user_udev (NMDevice *self); - void nm_device_set_unmanaged_by_quitting (NMDevice *device); - --gboolean nm_device_get_is_nm_owned (NMDevice *device); -+gboolean nm_device_is_nm_owned (NMDevice *device); - - gboolean nm_device_has_capability (NMDevice *self, NMDeviceCapabilities caps); - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 283ceda..56852f6 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1858,7 +1858,7 @@ recheck_assume_connection (NMManager *self, - g_return_val_if_fail (NM_IS_MANAGER (self), FALSE); - g_return_val_if_fail (NM_IS_DEVICE (device), FALSE); - -- if (nm_device_get_is_nm_owned (device)) -+ if (nm_device_is_nm_owned (device)) - return FALSE; - - if (!nm_device_get_managed (device, FALSE)) --- -2.9.4 - - -From 1ee731fc9890001fe5f6ac4884c9f5b8bf047024 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Tue, 30 May 2017 13:36:56 +0200 -Subject: [PATCH 2/5] config: allow persisting the device nm-owned state - -(cherry picked from commit 3fbbbb62f0b18a1efdc25ee0c01625ae8da65826) -(cherry picked from commit a42f3b92b7ef922c491c07a8ab0f24b1cf12b223) ---- - src/nm-config.c | 28 +++++++++++++++++++++++++--- - src/nm-config.h | 7 ++++++- - src/nm-manager.c | 3 ++- - 3 files changed, 33 insertions(+), 5 deletions(-) - -diff --git a/src/nm-config.c b/src/nm-config.c -index 54ccf9a..91c21de 100644 ---- a/src/nm-config.c -+++ b/src/nm-config.c -@@ -1872,6 +1872,7 @@ _nm_config_state_set (NMConfig *self, - #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_MANAGED "managed" - #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_PERM_HW_ADDR_FAKE "perm-hw-addr-fake" - #define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID "connection-uuid" -+#define DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_NM_OWNED "nm-owned" - - NM_UTILS_LOOKUP_STR_DEFINE_STATIC (_device_state_managed_type_to_str, NMConfigDeviceStateManagedType, - NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"), -@@ -1889,6 +1890,7 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf) - gs_free char *perm_hw_addr_fake = NULL; - gsize connection_uuid_len; - gsize perm_hw_addr_fake_len; -+ gint nm_owned = -1; - char *p; - - nm_assert (ifindex > 0); -@@ -1924,6 +1926,11 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf) - g_free (perm_hw_addr_fake); - perm_hw_addr_fake = normalized; - } -+ -+ nm_owned = nm_config_keyfile_get_boolean (kf, -+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE, -+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_NM_OWNED, -+ -1); - } - - connection_uuid_len = connection_uuid ? strlen (connection_uuid) + 1 : 0; -@@ -1937,6 +1944,7 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf) - device_state->managed = managed_type; - device_state->connection_uuid = NULL; - device_state->perm_hw_addr_fake = NULL; -+ device_state->nm_owned = nm_owned; - - p = (char *) (&device_state[1]); - if (connection_uuid) { -@@ -1966,6 +1974,7 @@ nm_config_device_state_load (int ifindex) - NMConfigDeviceStateData *device_state; - char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR) + 60]; - gs_unref_keyfile GKeyFile *kf = NULL; -+ const char *nm_owned_str; - - g_return_val_if_fail (ifindex > 0, NULL); - -@@ -1976,13 +1985,18 @@ nm_config_device_state_load (int ifindex) - g_clear_pointer (&kf, g_key_file_unref); - - device_state = _config_device_state_data_new (ifindex, kf); -+ nm_owned_str = device_state->nm_owned == TRUE ? -+ ", nm-owned=1" : -+ (device_state->nm_owned == FALSE ? ", nm-owned=0" : ""); -+ - -- _LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s", -+ _LOGT ("device-state: %s #%d (%s); managed=%s%s%s%s%s%s%s%s", - kf ? "read" : "miss", - ifindex, path, - _device_state_managed_type_to_str (device_state->managed), - NM_PRINT_FMT_QUOTED (device_state->connection_uuid, ", connection-uuid=", device_state->connection_uuid, "", ""), -- NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", "")); -+ NM_PRINT_FMT_QUOTED (device_state->perm_hw_addr_fake, ", perm-hw-addr-fake=", device_state->perm_hw_addr_fake, "", ""), -+ nm_owned_str); - - return device_state; - } -@@ -1991,7 +2005,8 @@ gboolean - nm_config_device_state_write (int ifindex, - NMConfigDeviceStateManagedType managed, - const char *perm_hw_addr_fake, -- const char *connection_uuid) -+ const char *connection_uuid, -+ gint nm_owned) - { - char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR) + 60]; - GError *local = NULL; -@@ -2026,6 +2041,13 @@ nm_config_device_state_write (int ifindex, - DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_CONNECTION_UUID, - connection_uuid); - } -+ if (nm_owned >= 0) { -+ g_key_file_set_boolean (kf, -+ DEVICE_RUN_STATE_KEYFILE_GROUP_DEVICE, -+ DEVICE_RUN_STATE_KEYFILE_KEY_DEVICE_NM_OWNED, -+ nm_owned); -+ } -+ - - if (!g_key_file_save_to_file (kf, path, &local)) { - _LOGW ("device-state: write #%d (%s) failed: %s", ifindex, path, local->message); -diff --git a/src/nm-config.h b/src/nm-config.h -index ae695fc..c5ff7c6 100644 ---- a/src/nm-config.h -+++ b/src/nm-config.h -@@ -205,13 +205,18 @@ struct _NMConfigDeviceStateData { - const char *connection_uuid; - - const char *perm_hw_addr_fake; -+ -+ /* whether the device was nm-owned (0/1) or -1 for -+ * non-software devices. */ -+ gint nm_owned; - }; - - NMConfigDeviceStateData *nm_config_device_state_load (int ifindex); - gboolean nm_config_device_state_write (int ifindex, - NMConfigDeviceStateManagedType managed, - const char *perm_hw_addr_fake, -- const char *connection_uuid); -+ const char *connection_uuid, -+ gint nm_owned); - void nm_config_device_state_prune_unseen (GHashTable *seen_ifindexes); - - /*****************************************************************************/ -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 56852f6..dc52115 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -5048,7 +5048,8 @@ nm_manager_write_device_state (NMManager *self) - if (nm_config_device_state_write (ifindex, - managed_type, - perm_hw_addr_fake, -- uuid)) -+ uuid, -+ -1)) - g_hash_table_add (seen_ifindexes, GINT_TO_POINTER (ifindex)); - } - --- -2.9.4 - - -From cf3d67882676ccba5089fd523ccf6337f66e6c3f Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Wed, 31 May 2017 16:58:21 +0200 -Subject: [PATCH 3/5] manager: restore the previous persistent nm-owned state - of devices - -After a daemon restart, any software device is considered !nm-owned, -even if it was created by NM. Therefore, a device stays around even if -the connection which created it gets deactivated or deleted. - -Fix this by remembering the previous nm-owned state in the device -state file. - -https://bugzilla.redhat.com/show_bug.cgi?id=1376199 -(cherry picked from commit cf9ba271e664ffd93f6ba6294ebc5f7e341a9a78) -(cherry picked from commit 333ed6ee2a30b0d40a2ac0d59e3fd2e9aaf3bf00) ---- - src/devices/nm-device.c | 13 +++++++++++++ - src/nm-manager.c | 5 ++++- - 2 files changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 746117d..fe6e955 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -3011,6 +3011,19 @@ realize_start_setup (NMDevice *self, - - _add_capabilities (self, capabilities); - -+ /* Update nm-owned flag according to state file */ -+ if ( !priv->nm_owned -+ && priv->ifindex > 0 -+ && nm_device_is_software (self)) { -+ gs_free NMConfigDeviceStateData *dev_state = NULL; -+ -+ dev_state = nm_config_device_state_load (priv->ifindex); -+ if (dev_state && dev_state->nm_owned == TRUE) { -+ priv->nm_owned = TRUE; -+ _LOGD (LOGD_DEVICE, "set nm-owned from state file"); -+ } -+ } -+ - if (!priv->udi) { - /* Use a placeholder UDI until we get a real one */ - priv->udi = g_strdup_printf ("/virtual/device/placeholder/%d", id++); -diff --git a/src/nm-manager.c b/src/nm-manager.c -index dc52115..97752c4 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -5006,6 +5006,7 @@ nm_manager_write_device_state (NMManager *self) - const GSList *devices; - NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - gs_unref_hashtable GHashTable *seen_ifindexes = NULL; -+ gint nm_owned; - - seen_ifindexes = g_hash_table_new (NULL, NULL); - -@@ -5045,11 +5046,13 @@ nm_manager_write_device_state (NMManager *self) - if (perm_hw_addr_fake && !perm_hw_addr_is_fake) - perm_hw_addr_fake = NULL; - -+ nm_owned = nm_device_is_software (device) ? nm_device_is_nm_owned (device) : -1; -+ - if (nm_config_device_state_write (ifindex, - managed_type, - perm_hw_addr_fake, - uuid, -- -1)) -+ nm_owned)) - g_hash_table_add (seen_ifindexes, GINT_TO_POINTER (ifindex)); - } - --- -2.9.4 - - -From 02b5487b3d3827b3ba6fcda7234f3f7a1976b2d4 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 22:11:50 +0200 -Subject: [PATCH 4/5] device: only set nm-owned from statefile during initial - setup - -The state file should only be read initially when NM starts, that is: -during NMManager's platform_query_devices(). - -At all later points, for example when a software device gets destroyed -and re-realized, the state file is clearly no longer relevant. - -Hence, pass the set-nm-owned flag from NMManager to realize_start_setup(). - -This is very much the same as with the NM_UNMANAGED_FLAG_USER_EXPLICT flag, -which we also read from the state-file. - -(cherry picked from commit d83848be9dfd0edb5f318b81854b371133d84f6e) -(cherry picked from commit 8e25de8ab360fc973d7222685f107b81dd872dc1) ---- - src/devices/nm-device.c | 22 +++++++++++----------- - src/devices/nm-device.h | 1 + - src/nm-manager.c | 3 +++ - 3 files changed, 15 insertions(+), 11 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index fe6e955..1aea8cb 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -527,6 +527,7 @@ static gboolean dhcp6_start (NMDevice *self, gboolean wait_for_ll); - static void nm_device_start_ip_check (NMDevice *self); - static void realize_start_setup (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit); - static void _commit_mtu (NMDevice *self, const NMIP4Config *config); - static void dhcp_schedule_restart (NMDevice *self, int family, const char *reason); -@@ -2740,6 +2741,7 @@ link_type_compatible (NMDevice *self, - * nm_device_realize_start(): - * @self: the #NMDevice - * @plink: an existing platform link or %NULL -+ * @set_nm_owned: for software device, if TRUE set nm-owned. - * @unmanaged_user_explicit: the user-explicit unmanaged flag to apply - * on the device initially. - * @out_compatible: %TRUE on return if @self is compatible with @plink -@@ -2757,6 +2759,7 @@ link_type_compatible (NMDevice *self, - gboolean - nm_device_realize_start (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit, - gboolean *out_compatible, - GError **error) -@@ -2781,7 +2784,7 @@ nm_device_realize_start (NMDevice *self, - plink_copy = *plink; - plink = &plink_copy; - } -- realize_start_setup (self, plink, unmanaged_user_explicit); -+ realize_start_setup (self, plink, set_nm_owned, unmanaged_user_explicit); - - return TRUE; - } -@@ -2821,7 +2824,7 @@ nm_device_create_and_realize (NMDevice *self, - plink = &plink_copy; - } - -- realize_start_setup (self, plink, NM_UNMAN_FLAG_OP_FORGET); -+ realize_start_setup (self, plink, FALSE, NM_UNMAN_FLAG_OP_FORGET); - nm_device_realize_finish (self, plink); - - if (nm_device_get_managed (self, FALSE)) { -@@ -2917,6 +2920,8 @@ realize_start_notify (NMDevice *self, - * realize_start_setup(): - * @self: the #NMDevice - * @plink: the #NMPlatformLink if backed by a kernel netdevice -+ * @set_nm_owned: if TRUE and device is a software-device, set nm-owned. -+ * TRUE. - * @unmanaged_user_explicit: the user-explict unmanaged flag to set. - * - * Update the device from backing resource properties (like hardware -@@ -2928,6 +2933,7 @@ realize_start_notify (NMDevice *self, - static void - realize_start_setup (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit) - { - NMDevicePrivate *priv; -@@ -3011,17 +3017,11 @@ realize_start_setup (NMDevice *self, - - _add_capabilities (self, capabilities); - -- /* Update nm-owned flag according to state file */ - if ( !priv->nm_owned -- && priv->ifindex > 0 -+ && set_nm_owned - && nm_device_is_software (self)) { -- gs_free NMConfigDeviceStateData *dev_state = NULL; -- -- dev_state = nm_config_device_state_load (priv->ifindex); -- if (dev_state && dev_state->nm_owned == TRUE) { -- priv->nm_owned = TRUE; -- _LOGD (LOGD_DEVICE, "set nm-owned from state file"); -- } -+ priv->nm_owned = TRUE; -+ _LOGD (LOGD_DEVICE, "set nm-owned from state file"); - } - - if (!priv->udi) { -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index 27f5018..74cc230 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -611,6 +611,7 @@ gboolean nm_device_has_capability (NMDevice *self, NMDeviceCapabilities caps); - - gboolean nm_device_realize_start (NMDevice *device, - const NMPlatformLink *plink, -+ gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit, - gboolean *out_compatible, - GError **error); -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 97752c4..b603b09 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -2215,6 +2215,7 @@ factory_device_added_cb (NMDeviceFactory *factory, - - if (nm_device_realize_start (device, - NULL, -+ FALSE, - NM_UNMAN_FLAG_OP_FORGET, - NULL, - &error)) { -@@ -2293,6 +2294,7 @@ platform_link_added (NMManager *self, - return; - } else if (nm_device_realize_start (candidate, - plink, -+ FALSE, - NM_UNMAN_FLAG_OP_FORGET, - &compatible, - &error)) { -@@ -2364,6 +2366,7 @@ platform_link_added (NMManager *self, - - if (nm_device_realize_start (device, - plink, -+ dev_state ? (dev_state->nm_owned == 1) : FALSE, - unmanaged_user_explicit, - NULL, - &error)) { --- -2.9.4 - - -From ba9657314afa3a0eab63281db83fbf38ba3fac2c Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 22:22:14 +0200 -Subject: [PATCH 5/5] core: allow assuming connections on "nm-owned" software - devices - -Especially now we load the nm-owned flag from run-state. We very much want to -assume connections on such devices. - -(cherry picked from commit 6a7b51f79bf93889665f9f6eb1ebbd4920535e24) -(cherry picked from commit 122be86c58b39b661b1cf466d5616d6f0006744e) ---- - src/nm-manager.c | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index b603b09..1daf633 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1858,9 +1858,6 @@ recheck_assume_connection (NMManager *self, - g_return_val_if_fail (NM_IS_MANAGER (self), FALSE); - g_return_val_if_fail (NM_IS_DEVICE (device), FALSE); - -- if (nm_device_is_nm_owned (device)) -- return FALSE; -- - if (!nm_device_get_managed (device, FALSE)) - return FALSE; - --- -2.9.4 - diff --git a/SOURCES/0023-ppp-don-t-start-IPv6-configuration-rh1515829.patch b/SOURCES/0023-ppp-don-t-start-IPv6-configuration-rh1515829.patch new file mode 100644 index 0000000..46aba69 --- /dev/null +++ b/SOURCES/0023-ppp-don-t-start-IPv6-configuration-rh1515829.patch @@ -0,0 +1,51 @@ +From a5f395ec33af68cb924b797fed833d472ce090b1 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Tue, 6 Feb 2018 10:04:53 +0100 +Subject: [PATCH] ppp: don't start IPv6 configuration on the device + +If IPV6CP terminates before IPCP, pppd enters the RUNNING phase and we +start IP configuration without having an IP interface set, which +triggers assertions. Instead, reimplement stage3_ip6_config_start to +be a no-op. Note that IPv6 configuration on PPP devices has never been +supported by NM. + +This is a simpler version of upstream commit dd98ada33f33 ("ppp: +introduce SetIfindex pppd plugin D-Bus method") that doesn't require +changing the internal plugin API. + +https://bugzilla.redhat.com/show_bug.cgi?id=1515829 +(cherry picked from commit 258f4fc76961f564c5d63d1eaf5246b21c2d0ce0) +--- + src/devices/nm-device-ppp.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/devices/nm-device-ppp.c b/src/devices/nm-device-ppp.c +index 8b3968d51..639ec44a7 100644 +--- a/src/devices/nm-device-ppp.c ++++ b/src/devices/nm-device-ppp.c +@@ -207,6 +207,14 @@ act_stage3_ip4_config_start (NMDevice *device, + return NM_ACT_STAGE_RETURN_POSTPONE; + } + ++static NMActStageReturn ++act_stage3_ip6_config_start (NMDevice *self, ++ NMIP6Config **out_config, ++ NMDeviceStateReason *out_failure_reason) ++{ ++ return NM_ACT_STAGE_RETURN_IP_FAIL; ++} ++ + static gboolean + create_and_realize (NMDevice *device, + NMConnection *connection, +@@ -273,6 +281,7 @@ nm_device_ppp_class_init (NMDevicePppClass *klass) + + parent_class->act_stage2_config = act_stage2_config; + parent_class->act_stage3_ip4_config_start = act_stage3_ip4_config_start; ++ parent_class->act_stage3_ip6_config_start = act_stage3_ip6_config_start; + parent_class->check_connection_compatible = check_connection_compatible; + parent_class->create_and_realize = create_and_realize; + parent_class->deactivate = deactivate; +-- +2.14.3 + diff --git a/SOURCES/0024-Revert-IPv4-rp_filter-handling-rh1492472.patch b/SOURCES/0024-Revert-IPv4-rp_filter-handling-rh1492472.patch new file mode 100644 index 0000000..323a91e --- /dev/null +++ b/SOURCES/0024-Revert-IPv4-rp_filter-handling-rh1492472.patch @@ -0,0 +1,228 @@ +From 687b84414f8ecee51785e600ba58f7e2cfd40767 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Fri, 2 Feb 2018 17:07:06 +0100 +Subject: [PATCH] Revert "device: apply a loose IPv4 rp_filter when it would + interfere with multihoming" + +Don't touch it until we're sure we're doing the right thing. +https://bugzilla.redhat.com/show_bug.cgi?id=1492472 + +This reverts commit cae3cef60fe6b37929e69d103663882274ad46bc. +--- + src/devices/nm-device.c | 172 ------------------------------------------------ + 1 file changed, 172 deletions(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index b3b31ea..fe280df 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -379,9 +379,6 @@ typedef struct _NMDevicePrivate { + NMIP4Config * wwan_ip4_config; /* WWAN configuration */ + GSList * vpn4_configs; /* VPNs which use this device */ + +- bool v4_has_shadowed_routes; +- const char *ip4_rp_filter; +- + /* DHCPv4 tracking */ + struct { + NMDhcpClient * client; +@@ -851,47 +848,6 @@ init_ip6_config_dns_priority (NMDevice *self, NMIP6Config *config) + + /*****************************************************************************/ + +-static gboolean +-nm_device_ipv4_sysctl_set (NMDevice *self, const char *property, const char *value) +-{ +- NMPlatform *platform = nm_device_get_platform (self); +- gs_free char *value_to_free = NULL; +- const char *value_to_set; +- char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE]; +- +- if (!nm_device_get_ip_ifindex (self)) +- return FALSE; +- +- if (value) { +- value_to_set = value; +- } else { +- /* Set to a default value when we've got a NULL @value. */ +- value_to_free = nm_platform_sysctl_get (platform, +- NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, "default", property))); +- value_to_set = value_to_free; +- } +- +- return nm_platform_sysctl_set (platform, +- NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, nm_device_get_ip_iface (self), property)), +- value_to_set); +-} +- +-static guint32 +-nm_device_ipv4_sysctl_get_uint32 (NMDevice *self, const char *property, guint32 fallback) +-{ +- char buf[NM_UTILS_SYSCTL_IP_CONF_PATH_BUFSIZE]; +- +- if (!nm_device_get_ip_ifindex (self)) +- return fallback; +- +- return nm_platform_sysctl_get_int_checked (nm_device_get_platform (self), +- NMP_SYSCTL_PATHID_ABSOLUTE (nm_utils_sysctl_ip_conf_path (AF_INET, buf, nm_device_get_ip_iface (self), property)), +- 10, +- 0, +- G_MAXUINT32, +- fallback); +-} +- + gboolean + nm_device_ipv6_sysctl_set (NMDevice *self, const char *property, const char *value) + { +@@ -2876,126 +2832,6 @@ link_changed_cb (NMPlatform *platform, + + /*****************************************************************************/ + +-typedef struct { +- in_addr_t network; +- guint8 plen; +-} IP4RPFilterData; +- +-static guint +-_v4_has_shadowed_routes_detect_hash (const IP4RPFilterData *d) +-{ +- NMHashState h; +- +- nm_hash_init (&h, 1105201169u); +- nm_hash_update_vals (&h, +- d->network, +- d->plen); +- return nm_hash_complete (&h); +-} +- +-static gboolean +-_v4_has_shadowed_routes_detect_equal (const IP4RPFilterData *d1, const IP4RPFilterData *d2) +-{ +- return d1->network == d2->network && d1->plen == d2->plen; +-} +- +-static gboolean +-_v4_has_shadowed_routes_detect (NMDevice *self) +-{ +- NMPlatform *platform; +- int ifindex; +- NMPLookup lookup; +- const NMDedupMultiHeadEntry *head_entry; +- NMDedupMultiIter iter; +- const NMPObject *o; +- guint data_len; +- gs_unref_hashtable GHashTable *data_hash = NULL; +- gs_free IP4RPFilterData *data_arr = NULL; +- +- ifindex = nm_device_get_ip_ifindex (self); +- if (ifindex <= 0) +- return FALSE; +- +- platform = nm_device_get_platform (self); +- +- head_entry = nm_platform_lookup (platform, +- nmp_lookup_init_object (&lookup, +- NMP_OBJECT_TYPE_IP4_ROUTE, +- ifindex)); +- if (!head_entry) +- return FALSE; +- +- /* first, create a lookup index @data_hash for all network/plen pairs. */ +- data_len = 0; +- data_arr = g_new (IP4RPFilterData, head_entry->len); +- data_hash = g_hash_table_new ((GHashFunc) _v4_has_shadowed_routes_detect_hash, +- (GEqualFunc) _v4_has_shadowed_routes_detect_equal); +- +- nmp_cache_iter_for_each (&iter, head_entry, &o) { +- const NMPlatformIP4Route *r = NMP_OBJECT_CAST_IP4_ROUTE (o); +- IP4RPFilterData *d; +- +- nm_assert (r->ifindex == ifindex); +- +- if ( NM_PLATFORM_IP_ROUTE_IS_DEFAULT (r) +- || r->table_coerced) +- continue; +- +- d = &data_arr[data_len++]; +- d->network = nm_utils_ip4_address_clear_host_address (r->network, r->plen); +- d->plen = r->plen; +- g_hash_table_add (data_hash, d); +- } +- +- /* then, search if there is any route on another interface with the same +- * network/plen destination. If yes, we consider this a multihoming +- * setup. */ +- head_entry = nm_platform_lookup (platform, +- nmp_lookup_init_obj_type (&lookup, +- NMP_OBJECT_TYPE_IP4_ROUTE)); +- nmp_cache_iter_for_each (&iter, head_entry, &o) { +- const NMPlatformIP4Route *r = NMP_OBJECT_CAST_IP4_ROUTE (o); +- IP4RPFilterData d; +- +- if ( r->ifindex == ifindex +- || NM_PLATFORM_IP_ROUTE_IS_DEFAULT (r) +- || r->table_coerced) +- continue; +- +- d.network = nm_utils_ip4_address_clear_host_address (r->network, r->plen); +- d.plen = r->plen; +- if (g_hash_table_contains (data_hash, &d)) +- return TRUE; +- } +- +- return FALSE; +-} +- +-static void +-ip4_rp_filter_update (NMDevice *self) +-{ +- NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); +- const char *ip4_rp_filter; +- +- if ( priv->v4_has_shadowed_routes +- || nm_device_get_best_default_route (self, AF_INET)) { +- if (nm_device_ipv4_sysctl_get_uint32 (self, "rp_filter", 0) != 1) { +- /* Don't touch the rp_filter if it's not strict. */ +- return; +- } +- /* Loose rp_filter */ +- ip4_rp_filter = "2"; +- } else { +- /* Default rp_filter */ +- ip4_rp_filter = NULL; +- } +- +- if (ip4_rp_filter != priv->ip4_rp_filter) { +- nm_device_ipv4_sysctl_set (self, "rp_filter", ip4_rp_filter); +- priv->ip4_rp_filter = ip4_rp_filter; +- } +-} +- + static void + link_changed (NMDevice *self, const NMPlatformLink *pllink) + { +@@ -10259,9 +10095,6 @@ nm_device_set_ip4_config (NMDevice *self, + + concheck_periodic_update (self); + +- if (!nm_device_sys_iface_state_is_external_or_assume (self)) +- ip4_rp_filter_update (self); +- + if (has_changes) { + NMSettingsConnection *settings_connection; + +@@ -11284,11 +11117,6 @@ queued_ip4_config_change (gpointer user_data) + + set_unmanaged_external_down (self, TRUE); + +- if (!nm_device_sys_iface_state_is_external_or_assume (self)) { +- priv->v4_has_shadowed_routes = _v4_has_shadowed_routes_detect (self);; +- ip4_rp_filter_update (self); +- } +- + return FALSE; + } + +-- +2.14.3 + diff --git a/SOURCES/0024-fix-delayed-assume-master-rh1452062.patch b/SOURCES/0024-fix-delayed-assume-master-rh1452062.patch deleted file mode 100644 index cb58bb5..0000000 --- a/SOURCES/0024-fix-delayed-assume-master-rh1452062.patch +++ /dev/null @@ -1,536 +0,0 @@ -From 72e544c7eca495d0857d0710cc77161cd3b145d0 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 17:34:47 +0200 -Subject: [PATCH 1/1] manager: fix preserving assume state during activation - -Originally 850c977 "device: track system interface state in NMDevice", -intended that a connection can only be assumed initially when seeing -a device for the first time. Assuming a connection later was to be -prevented by setting device's sys-iface-state to MANAGED. - -That changed too much in behavior, because we used to assume external -connections also when they are activated later on. So this was attempted -to get fixed by - - acf1067 nm-manager: try assuming connections on managed devices - - b6b7d90 manager: avoid generating in memory connections during startup for managed devices - -It's probably just wrong to prevent assuming connections based on the -sys-iface-state. So drop the check for sys-iface-state from -recheck_assume_connection(). Now, we can assume anytime on managed, -disconnected interfaces, like previously. -Btw, note that priv->startup is totally wrong to check there, because -priv->startup has the sole purpose of tracking startup-complete property. -Startup, as far as NMManager is concerned, is platform_query_devices(). - -However, the problem is that we only assume connections (contrary to -doing external activation) when we have a connection-uuid from the state -file or with guess-assume during startup. - -When assuming a master device, it can fail with - - (nm-bond): ignoring generated connection (IPv6LL-only and not in master-slave relationship) - -thus, for internal reason the device cannot be assumed yet. - -Fix that by attatching the assume-state to the device, so that on multiple -recheck_assume_connection() calls we still try to assume. Whenever we try -to assume the connection and it fails due to external reasons (like, the connection -no longer matching), we clear the assume state, so that we only try as -long as there are internal reasons why assuming fails. - -https://bugzilla.redhat.com/show_bug.cgi?id=1452062 -(cherry picked from commit 729de7d7f09c3ad813477b7a822155b4b95dc682) -(cherry picked from commit 06db38b91d627f897b5bdd0de4a06f7b8a220902) ---- - src/devices/nm-device.c | 86 ++++++++++++++++++++++++++++++++++++++++++--- - src/devices/nm-device.h | 15 +++++++- - src/nm-manager.c | 93 +++++++++++++++++++++++++------------------------ - 3 files changed, 144 insertions(+), 50 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 1aea8cb..404dcf7 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -264,6 +264,9 @@ typedef struct _NMDevicePrivate { - - bool nm_owned:1; /* whether the device is a device owned and created by NM */ - -+ bool assume_state_guess_assume:1; -+ char * assume_state_connection_uuid; -+ - GHashTable * available_connections; - char * hw_addr; - char * hw_addr_perm; -@@ -527,6 +530,8 @@ static gboolean dhcp6_start (NMDevice *self, gboolean wait_for_ll); - static void nm_device_start_ip_check (NMDevice *self); - static void realize_start_setup (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean assume_state_guess_assume, -+ const char *assume_state_connection_uuid, - gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit); - static void _commit_mtu (NMDevice *self, const NMIP4Config *config); -@@ -711,6 +716,52 @@ nm_device_sys_iface_state_set (NMDevice *self, - - /*****************************************************************************/ - -+void -+nm_device_assume_state_get (NMDevice *self, -+ gboolean *out_assume_state_guess_assume, -+ const char **out_assume_state_connection_uuid) -+{ -+ NMDevicePrivate *priv; -+ -+ g_return_if_fail (NM_IS_DEVICE (self)); -+ -+ priv = NM_DEVICE_GET_PRIVATE (self); -+ NM_SET_OUT (out_assume_state_guess_assume, priv->assume_state_guess_assume); -+ NM_SET_OUT (out_assume_state_connection_uuid, priv->assume_state_connection_uuid); -+} -+ -+static void -+_assume_state_set (NMDevice *self, -+ gboolean assume_state_guess_assume, -+ const char *assume_state_connection_uuid) -+{ -+ NMDevicePrivate *priv; -+ -+ nm_assert (NM_IS_DEVICE (self)); -+ -+ priv = NM_DEVICE_GET_PRIVATE (self); -+ if ( priv->assume_state_guess_assume == !!assume_state_guess_assume -+ && nm_streq0 (priv->assume_state_connection_uuid, assume_state_connection_uuid)) -+ return; -+ -+ _LOGD (LOGD_DEVICE, "assume-state: set guess-assume=%c, connection=%s%s%s", -+ assume_state_guess_assume ? '1' : '0', -+ NM_PRINT_FMT_QUOTE_STRING (assume_state_connection_uuid)); -+ priv->assume_state_guess_assume = assume_state_guess_assume; -+ g_free (priv->assume_state_connection_uuid); -+ priv->assume_state_connection_uuid = g_strdup (assume_state_connection_uuid); -+} -+ -+void -+nm_device_assume_state_reset (NMDevice *self) -+{ -+ g_return_if_fail (NM_IS_DEVICE (self)); -+ -+ _assume_state_set (self, FALSE, NULL); -+} -+ -+/*****************************************************************************/ -+ - static void - init_ip4_config_dns_priority (NMDevice *self, NMIP4Config *config) - { -@@ -2741,6 +2792,8 @@ link_type_compatible (NMDevice *self, - * nm_device_realize_start(): - * @self: the #NMDevice - * @plink: an existing platform link or %NULL -+ * @assume_state_guess_assume: set the guess_assume state. -+ * @assume_state_connection_uuid: set the connection uuid to assume. - * @set_nm_owned: for software device, if TRUE set nm-owned. - * @unmanaged_user_explicit: the user-explicit unmanaged flag to apply - * on the device initially. -@@ -2759,6 +2812,8 @@ link_type_compatible (NMDevice *self, - gboolean - nm_device_realize_start (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean assume_state_guess_assume, -+ const char *assume_state_connection_uuid, - gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit, - gboolean *out_compatible, -@@ -2784,8 +2839,11 @@ nm_device_realize_start (NMDevice *self, - plink_copy = *plink; - plink = &plink_copy; - } -- realize_start_setup (self, plink, set_nm_owned, unmanaged_user_explicit); -- -+ realize_start_setup (self, plink, -+ assume_state_guess_assume, -+ assume_state_connection_uuid, -+ set_nm_owned, -+ unmanaged_user_explicit); - return TRUE; - } - -@@ -2824,7 +2882,10 @@ nm_device_create_and_realize (NMDevice *self, - plink = &plink_copy; - } - -- realize_start_setup (self, plink, FALSE, NM_UNMAN_FLAG_OP_FORGET); -+ realize_start_setup (self, plink, -+ FALSE, /* assume_state_guess_assume */ -+ NULL, /* assume_state_connection_uuid */ -+ FALSE, NM_UNMAN_FLAG_OP_FORGET); - nm_device_realize_finish (self, plink); - - if (nm_device_get_managed (self, FALSE)) { -@@ -2920,6 +2981,8 @@ realize_start_notify (NMDevice *self, - * realize_start_setup(): - * @self: the #NMDevice - * @plink: the #NMPlatformLink if backed by a kernel netdevice -+ * @assume_state_guess_assume: set the guess_assume state. -+ * @assume_state_connection_uuid: set the connection uuid to assume. - * @set_nm_owned: if TRUE and device is a software-device, set nm-owned. - * TRUE. - * @unmanaged_user_explicit: the user-explict unmanaged flag to set. -@@ -2933,6 +2996,8 @@ realize_start_notify (NMDevice *self, - static void - realize_start_setup (NMDevice *self, - const NMPlatformLink *plink, -+ gboolean assume_state_guess_assume, -+ const char *assume_state_connection_uuid, - gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit) - { -@@ -2972,6 +3037,8 @@ realize_start_setup (NMDevice *self, - _notify (self, PROP_MTU); - } - -+ _assume_state_set (self, assume_state_guess_assume, assume_state_connection_uuid); -+ - nm_device_sys_iface_state_set (self, NM_DEVICE_SYS_IFACE_STATE_EXTERNAL); - - if (plink) { -@@ -3193,6 +3260,8 @@ nm_device_unrealize (NMDevice *self, gboolean remove_resources, GError **error) - - _LOGD (LOGD_DEVICE, "unrealize (ifindex %d)", ifindex > 0 ? ifindex : 0); - -+ nm_device_assume_state_reset (self); -+ - if (remove_resources) { - if (NM_DEVICE_GET_CLASS (self)->unrealize) { - if (!NM_DEVICE_GET_CLASS (self)->unrealize (self, error)) -@@ -4042,7 +4111,7 @@ nm_device_master_update_slave_connection (NMDevice *self, - } - - NMConnection * --nm_device_generate_connection (NMDevice *self, NMDevice *master) -+nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_maybe_later) - { - NMDeviceClass *klass = NM_DEVICE_GET_CLASS (self); - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); -@@ -4056,6 +4125,8 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master) - GError *error = NULL; - const NMPlatformLink *pllink; - -+ NM_SET_OUT (out_maybe_later, FALSE); -+ - /* If update_connection() is not implemented, just fail. */ - if (!klass->update_connection) - return NULL; -@@ -4131,6 +4202,7 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master) - && !nm_setting_connection_get_master (NM_SETTING_CONNECTION (s_con)) - && !priv->slaves) { - _LOGD (LOGD_DEVICE, "ignoring generated connection (no IP and not in master-slave relationship)"); -+ NM_SET_OUT (out_maybe_later, TRUE); - g_object_unref (connection); - connection = NULL; - } -@@ -4145,6 +4217,7 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master) - && !priv->slaves - && !nm_config_data_get_assume_ipv6ll_only (NM_CONFIG_GET_DATA, self)) { - _LOGD (LOGD_DEVICE, "ignoring generated connection (IPv6LL-only and not in master-slave relationship)"); -+ NM_SET_OUT (out_maybe_later, TRUE); - g_object_unref (connection); - connection = NULL; - } -@@ -12504,6 +12577,9 @@ _set_state_full (NMDevice *self, - NM_DEVICE_SYS_IFACE_STATE_ASSUME)) - nm_device_sys_iface_state_set (self, NM_DEVICE_SYS_IFACE_STATE_MANAGED); - -+ if (state > NM_DEVICE_STATE_DISCONNECTED) -+ nm_device_assume_state_reset (self); -+ - if (state <= NM_DEVICE_STATE_UNAVAILABLE) { - if (available_connections_del_all (self)) - _notify (self, PROP_AVAILABLE_CONNECTIONS); -@@ -13778,6 +13854,8 @@ dispose (GObject *object) - - nm_clear_g_cancellable (&priv->deactivating_cancellable); - -+ nm_device_assume_state_reset (self); -+ - _parent_set_ifindex (self, 0, FALSE); - - platform = nm_device_get_platform (self); -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index 74cc230..01e3938 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -487,7 +487,9 @@ void nm_device_removed (NMDevice *self, gboolean unconf - gboolean nm_device_is_available (NMDevice *dev, NMDeviceCheckDevAvailableFlags flags); - gboolean nm_device_has_carrier (NMDevice *dev); - --NMConnection * nm_device_generate_connection (NMDevice *self, NMDevice *master); -+NMConnection * nm_device_generate_connection (NMDevice *self, -+ NMDevice *master, -+ gboolean *out_maybe_later); - - gboolean nm_device_master_update_slave_connection (NMDevice *master, - NMDevice *slave, -@@ -609,8 +611,19 @@ gboolean nm_device_is_nm_owned (NMDevice *device); - - gboolean nm_device_has_capability (NMDevice *self, NMDeviceCapabilities caps); - -+/*****************************************************************************/ -+ -+void nm_device_assume_state_get (NMDevice *self, -+ gboolean *out_assume_state_guess_assume, -+ const char **out_assume_state_connection_uuid); -+void nm_device_assume_state_reset (NMDevice *self); -+ -+/*****************************************************************************/ -+ - gboolean nm_device_realize_start (NMDevice *device, - const NMPlatformLink *plink, -+ gboolean assume_state_guess_assume, -+ const char *assume_state_connection_uuid, - gboolean set_nm_owned, - NMUnmanFlagOp unmanaged_user_explicit, - gboolean *out_compatible, -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 1daf633..9a7b123 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1691,11 +1691,6 @@ done: - * get_existing_connection: - * @manager: #NMManager instance - * @device: #NMDevice instance -- * @guess_assume: whether to employ a heuristic to search for a matching -- * connection to assume. -- * @assume_connection_uuid: if present, try to assume a connection with this -- * UUID. If no uuid is given or no matching connection is found, we -- * only do external activation. - * @out_generated: (allow-none): return TRUE, if the connection was generated. - * - * Returns: a #NMSettingsConnection to be assumed by the device, or %NULL if -@@ -1704,8 +1699,6 @@ done: - static NMSettingsConnection * - get_existing_connection (NMManager *self, - NMDevice *device, -- gboolean guess_assume, -- const char *assume_connection_uuid, - gboolean *out_generated) - { - NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); -@@ -1716,6 +1709,9 @@ get_existing_connection (NMManager *self, - int ifindex = nm_device_get_ifindex (device); - NMSettingsConnection *matched; - NMSettingsConnection *connection_checked = NULL; -+ gboolean assume_state_guess_assume = FALSE; -+ const char *assume_state_connection_uuid = NULL; -+ gboolean maybe_later; - - if (out_generated) - *out_generated = FALSE; -@@ -1746,9 +1742,16 @@ get_existing_connection (NMManager *self, - * update_connection() implemented, otherwise nm_device_generate_connection() - * returns NULL. - */ -- connection = nm_device_generate_connection (device, master); -- if (!connection) -+ connection = nm_device_generate_connection (device, master, &maybe_later); -+ if (!connection) { -+ if (!maybe_later) -+ nm_device_assume_state_reset (device); - return NULL; -+ } -+ -+ nm_device_assume_state_get (device, -+ &assume_state_guess_assume, -+ &assume_state_connection_uuid); - - /* Now we need to compare the generated connection to each configured - * connection. The comparison function is the heart of the connection -@@ -1759,8 +1762,8 @@ get_existing_connection (NMManager *self, - * When no configured connection matches the generated connection, we keep - * the generated connection instead. - */ -- if ( assume_connection_uuid -- && (connection_checked = nm_settings_get_connection_by_uuid (priv->settings, assume_connection_uuid)) -+ if ( assume_state_connection_uuid -+ && (connection_checked = nm_settings_get_connection_by_uuid (priv->settings, assume_state_connection_uuid)) - && !active_connection_find_first (self, connection_checked, NULL, - NM_ACTIVE_CONNECTION_STATE_DEACTIVATING) - && nm_device_check_connection_compatible (device, NM_CONNECTION (connection_checked))) { -@@ -1778,7 +1781,7 @@ get_existing_connection (NMManager *self, - } else - matched = NULL; - -- if (!matched && guess_assume) { -+ if (!matched && assume_state_guess_assume) { - gs_free NMSettingsConnection **connections = NULL; - guint len, i, j; - -@@ -1812,9 +1815,10 @@ get_existing_connection (NMManager *self, - nm_device_get_iface (device), - nm_settings_connection_get_id (matched), - nm_settings_connection_get_uuid (matched), -- assume_connection_uuid && nm_streq (assume_connection_uuid, nm_settings_connection_get_uuid (matched)) -+ assume_state_connection_uuid && nm_streq (assume_state_connection_uuid, nm_settings_connection_get_uuid (matched)) - ? " (indicated)" : " (guessed)"); - g_object_unref (connection); -+ nm_device_assume_state_reset (device); - return matched; - } - -@@ -1822,6 +1826,8 @@ get_existing_connection (NMManager *self, - nm_device_get_iface (device), - nm_connection_get_id (connection)); - -+ nm_device_assume_state_reset (device); -+ - added = nm_settings_add_connection (priv->settings, connection, FALSE, &error); - if (added) { - nm_settings_connection_set_flags (NM_SETTINGS_CONNECTION (added), -@@ -1844,34 +1850,28 @@ get_existing_connection (NMManager *self, - - static gboolean - recheck_assume_connection (NMManager *self, -- NMDevice *device, -- gboolean guess_assume, -- const char *assume_connection_uuid) -+ NMDevice *device) - { - NMSettingsConnection *connection; - gboolean was_unmanaged = FALSE; - gboolean generated = FALSE; - NMDeviceState state; -- NMDeviceSysIfaceState if_state; -- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - - g_return_val_if_fail (NM_IS_MANAGER (self), FALSE); - g_return_val_if_fail (NM_IS_DEVICE (device), FALSE); - -- if (!nm_device_get_managed (device, FALSE)) -+ if (!nm_device_get_managed (device, FALSE)) { -+ nm_device_assume_state_reset (device); - return FALSE; -+ } - - state = nm_device_get_state (device); -- if (state > NM_DEVICE_STATE_DISCONNECTED) -- return FALSE; -- -- if_state = nm_device_sys_iface_state_get (device); -- if (!priv->startup && (if_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED)) -- nm_assert (!guess_assume && (assume_connection_uuid == NULL)); -- else if (if_state != NM_DEVICE_SYS_IFACE_STATE_EXTERNAL) -+ if (state > NM_DEVICE_STATE_DISCONNECTED) { -+ nm_device_assume_state_reset (device); - return FALSE; -+ } - -- connection = get_existing_connection (self, device, guess_assume, assume_connection_uuid, &generated); -+ connection = get_existing_connection (self, device, &generated); - if (!connection) { - _LOGD (LOGD_DEVICE, "(%s): can't assume; no connection", - nm_device_get_iface (device)); -@@ -1951,9 +1951,9 @@ recheck_assume_connection (NMManager *self, - } - - static void --recheck_assume_connection_cb (NMDevice *device, gpointer user_data) -+recheck_assume_connection_cb (NMManager *self, NMDevice *device) - { -- recheck_assume_connection (user_data, device, FALSE, NULL); -+ recheck_assume_connection (self, device); - } - - static void -@@ -2046,19 +2046,19 @@ device_connectivity_changed (NMDevice *device, - static void - _device_realize_finish (NMManager *self, - NMDevice *device, -- const NMPlatformLink *plink, -- gboolean guess_assume, -- const char *connection_uuid_to_assume) -+ const NMPlatformLink *plink) - { - g_return_if_fail (NM_IS_MANAGER (self)); - g_return_if_fail (NM_IS_DEVICE (device)); - - nm_device_realize_finish (device, plink); - -- if (!nm_device_get_managed (device, FALSE)) -+ if (!nm_device_get_managed (device, FALSE)) { -+ nm_device_assume_state_reset (device); - return; -+ } - -- if (recheck_assume_connection (self, device, guess_assume, connection_uuid_to_assume)) -+ if (recheck_assume_connection (self, device)) - return; - - /* if we failed to assume a connection for the managed device, but the device -@@ -2128,9 +2128,9 @@ add_device (NMManager *self, NMDevice *device, GError **error) - G_CALLBACK (device_removed_cb), - self); - -- g_signal_connect (device, NM_DEVICE_RECHECK_ASSUME, -- G_CALLBACK (recheck_assume_connection_cb), -- self); -+ g_signal_connect_data (device, NM_DEVICE_RECHECK_ASSUME, -+ G_CALLBACK (recheck_assume_connection_cb), -+ self, NULL, G_CONNECT_SWAPPED); - - g_signal_connect (device, "notify::" NM_DEVICE_IP_IFACE, - G_CALLBACK (device_ip_iface_changed), -@@ -2212,12 +2212,14 @@ factory_device_added_cb (NMDeviceFactory *factory, - - if (nm_device_realize_start (device, - NULL, -- FALSE, -+ FALSE, /* assume_state_guess_assume */ -+ NULL, /* assume_state_connection_uuid */ -+ FALSE, /* set_nm_owned */ - NM_UNMAN_FLAG_OP_FORGET, - NULL, - &error)) { - add_device (self, device, NULL); -- _device_realize_finish (self, device, NULL, FALSE, NULL); -+ _device_realize_finish (self, device, NULL); - } else { - _LOGW (LOGD_DEVICE, "(%s): failed to realize device: %s", - nm_device_get_iface (device), error->message); -@@ -2291,12 +2293,13 @@ platform_link_added (NMManager *self, - return; - } else if (nm_device_realize_start (candidate, - plink, -- FALSE, -+ FALSE, /* assume_state_guess_assume */ -+ NULL, /* assume_state_connection_uuid */ -+ FALSE, /* set_nm_owned */ - NM_UNMAN_FLAG_OP_FORGET, - &compatible, - &error)) { -- /* Success */ -- _device_realize_finish (self, candidate, plink, FALSE, NULL); -+ _device_realize_finish (self, candidate, plink); - return; - } - -@@ -2363,14 +2366,14 @@ platform_link_added (NMManager *self, - - if (nm_device_realize_start (device, - plink, -+ guess_assume, -+ dev_state ? dev_state->connection_uuid : NULL, - dev_state ? (dev_state->nm_owned == 1) : FALSE, - unmanaged_user_explicit, - NULL, - &error)) { - add_device (self, device, NULL); -- _device_realize_finish (self, device, plink, -- guess_assume, -- dev_state ? dev_state->connection_uuid : NULL); -+ _device_realize_finish (self, device, plink); - } else { - _LOGW (LOGD_DEVICE, "%s: failed to realize device: %s", - plink->name, error->message); --- -2.9.4 - diff --git a/SOURCES/0025-improve-logging-assume-rh1452062.patch b/SOURCES/0025-improve-logging-assume-rh1452062.patch deleted file mode 100644 index eb9b523..0000000 --- a/SOURCES/0025-improve-logging-assume-rh1452062.patch +++ /dev/null @@ -1,1173 +0,0 @@ -From bc8c001312ba87cb4069b5a1785bb8fef607f079 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 12:18:21 +0200 -Subject: [PATCH 01/10] device: rework device's _NMLOG() logging macro - -- if the interface-name is NULL, print [null], to distinguish - it from (ifname). -- evaluate the ifname only once. - -(cherry picked from commit f10b95880666fe611fb2d0c27d49bfe3988ec9ec) -(cherry picked from commit 60ce882419201f75ac762e559854c85926263fe1) ---- - src/devices/nm-device-logging.h | 22 ++++++++++++++++------ - 1 file changed, 16 insertions(+), 6 deletions(-) - -diff --git a/src/devices/nm-device-logging.h b/src/devices/nm-device-logging.h -index 419a4a5..5f95a91 100644 ---- a/src/devices/nm-device-logging.h -+++ b/src/devices/nm-device-logging.h -@@ -34,11 +34,21 @@ _nm_device_log_self_to_device (t *self) \ - #undef _NMLOG_ENABLED - #define _NMLOG_ENABLED(level, domain) ( nm_logging_enabled ((level), (domain)) ) - #define _NMLOG(level, domain, ...) \ -- nm_log_obj ((level), (domain), \ -- (self) ? nm_device_get_iface (_nm_device_log_self_to_device (self)) : NULL, \ -- NULL, (self), "device", \ -- "(%s): " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ -- (self) ? (nm_device_get_iface (_nm_device_log_self_to_device (self)) ?: "(null)") : "(none)" \ -- _NM_UTILS_MACRO_REST(__VA_ARGS__)) -+ 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 = _self ? nm_device_get_iface (_nm_device_log_self_to_device (_self)) : NULL; \ -+ \ -+ 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__ */ --- -2.9.4 - - -From 5449347dcb049ed7f7d5a9ee022dcf2b2d676412 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 17:22:16 +0200 -Subject: [PATCH 02/10] device: expose nm_device_state_to_str() function for - NMDeviceState - -(cherry picked from commit 4b15df26561d5cf3890c9f8e1ec0266547d1cb7a) -(cherry picked from commit e0b7a44062ac870dc884021704f915b21caeaa52) ---- - src/devices/nm-device.c | 28 ++++++++++++++-------------- - src/devices/nm-device.h | 3 +++ - 2 files changed, 17 insertions(+), 14 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 404dcf7..fdf88c9 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -557,8 +557,8 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (queued_state_to_string, NMDeviceState, - NM_UTILS_LOOKUP_STR_ITEM (NM_DEVICE_STATE_FAILED, NM_PENDING_ACTIONPREFIX_QUEUED_STATE_CHANGE "failed"), - ); - --static const char * --state_to_string (NMDeviceState state) -+const char * -+nm_device_state_to_str (NMDeviceState state) - { - return queued_state_to_string (state) + NM_STRLEN (NM_PENDING_ACTIONPREFIX_QUEUED_STATE_CHANGE); - } -@@ -3423,9 +3423,9 @@ slave_state_changed (NMDevice *slave, - _LOGD (LOGD_DEVICE, "slave %s state change %d (%s) -> %d (%s)", - nm_device_get_iface (slave), - slave_old_state, -- state_to_string (slave_old_state), -+ nm_device_state_to_str (slave_old_state), - slave_new_state, -- state_to_string (slave_new_state)); -+ nm_device_state_to_str (slave_new_state)); - - /* Don't try to enslave slaves until the master is ready */ - if (priv->state < NM_DEVICE_STATE_CONFIG) -@@ -4434,7 +4434,7 @@ recheck_available (gpointer user_data) - _LOGD (LOGD_DEVICE, "is %savailable, %s %s", - now_available ? "" : "not ", - new_state == NM_DEVICE_STATE_UNAVAILABLE ? "no change required for" : "will transition to", -- state_to_string (new_state == NM_DEVICE_STATE_UNAVAILABLE ? state : new_state)); -+ nm_device_state_to_str (new_state == NM_DEVICE_STATE_UNAVAILABLE ? state : new_state)); - - priv->recheck_available.available_reason = NM_DEVICE_STATE_REASON_NONE; - priv->recheck_available.unavailable_reason = NM_DEVICE_STATE_REASON_NONE; -@@ -12536,8 +12536,8 @@ _set_state_full (NMDevice *self, - && ( state != NM_DEVICE_STATE_UNAVAILABLE - || !priv->firmware_missing)) { - _LOGD (LOGD_DEVICE, "state change: %s -> %s (reason '%s') [%d %d %d]%s", -- state_to_string (old_state), -- state_to_string (state), -+ nm_device_state_to_str (old_state), -+ nm_device_state_to_str (state), - reason_to_string (reason), - old_state, - state, -@@ -12547,8 +12547,8 @@ _set_state_full (NMDevice *self, - } - - _LOGI (LOGD_DEVICE, "state change: %s -> %s (reason '%s') [%d %d %d]", -- state_to_string (old_state), -- state_to_string (state), -+ nm_device_state_to_str (old_state), -+ nm_device_state_to_str (state), - reason_to_string (reason), - old_state, - state, -@@ -12872,7 +12872,7 @@ queued_state_set (gpointer user_data) - nm_assert (priv->queued_state.id); - - _LOGD (LOGD_DEVICE, "queue-state[%s, reason:%s, id:%u]: %s", -- state_to_string (priv->queued_state.state), -+ nm_device_state_to_str (priv->queued_state.state), - reason_to_string (priv->queued_state.reason), - priv->queued_state.id, - "change state"); -@@ -12903,7 +12903,7 @@ nm_device_queue_state (NMDevice *self, - - if (priv->queued_state.id && priv->queued_state.state == state) { - _LOGD (LOGD_DEVICE, "queue-state[%s, reason:%s, id:%u]: %s%s%s%s", -- state_to_string (priv->queued_state.state), -+ nm_device_state_to_str (priv->queued_state.state), - reason_to_string (priv->queued_state.reason), - priv->queued_state.id, - "ignore queuing same state change", -@@ -12919,7 +12919,7 @@ nm_device_queue_state (NMDevice *self, - /* We should only ever have one delayed state transition at a time */ - if (priv->queued_state.id) { - _LOGW (LOGD_DEVICE, "queue-state[%s, reason:%s, id:%u]: %s", -- state_to_string (priv->queued_state.state), -+ nm_device_state_to_str (priv->queued_state.state), - reason_to_string (priv->queued_state.reason), - priv->queued_state.id, - "replace previously queued state change"); -@@ -12932,7 +12932,7 @@ nm_device_queue_state (NMDevice *self, - priv->queued_state.id = g_idle_add (queued_state_set, self); - - _LOGD (LOGD_DEVICE, "queue-state[%s, reason:%s, id:%u]: %s", -- state_to_string (state), -+ nm_device_state_to_str (state), - reason_to_string (reason), - priv->queued_state.id, - "queue state change"); -@@ -12947,7 +12947,7 @@ queued_state_clear (NMDevice *self) - return; - - _LOGD (LOGD_DEVICE, "queue-state[%s, reason:%s, id:%u]: %s", -- state_to_string (priv->queued_state.state), -+ nm_device_state_to_str (priv->queued_state.state), - reason_to_string (priv->queued_state.reason), - priv->queued_state.id, - "clear queued state change"); -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index 01e3938..edbb0aa 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -722,4 +722,7 @@ void nm_device_check_connectivity (NMDevice *self, - gpointer user_data); - NMConnectivityState nm_device_get_connectivity_state (NMDevice *self); - -+ -+const char *nm_device_state_to_str (NMDeviceState state); -+ - #endif /* __NETWORKMANAGER_DEVICE_H__ */ --- -2.9.4 - - -From c1fdd7063b9be81cbac1e256c0cca7ee8c6b4486 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 12:47:27 +0200 -Subject: [PATCH 03/10] logging: add LOG3 macros - -(cherry picked from commit 2ae891b5923afc2d4f2853f213d26538092b1c39) -(cherry picked from commit c5812a5fb9bee418e2d2c4f4ef4225d5cde86e87) ---- - src/nm-logging.h | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/src/nm-logging.h b/src/nm-logging.h -index ff1fac7..91a4141 100644 ---- a/src/nm-logging.h -+++ b/src/nm-logging.h -@@ -306,6 +306,37 @@ gboolean nm_logging_syslog_enabled (void); - #define _LOG2t_err(errsv, ...) G_STMT_START { if (FALSE) { _NMLOG2_err (errsv, LOGL_TRACE, __VA_ARGS__); } } G_STMT_END - #endif - -+#define _NMLOG3_ENABLED(level) ( nm_logging_enabled ((level), (_NMLOG3_DOMAIN)) ) -+ -+#define _LOG3T(...) _NMLOG3 (LOGL_TRACE, __VA_ARGS__) -+#define _LOG3D(...) _NMLOG3 (LOGL_DEBUG, __VA_ARGS__) -+#define _LOG3I(...) _NMLOG3 (LOGL_INFO , __VA_ARGS__) -+#define _LOG3W(...) _NMLOG3 (LOGL_WARN , __VA_ARGS__) -+#define _LOG3E(...) _NMLOG3 (LOGL_ERR , __VA_ARGS__) -+ -+#define _LOG3T_ENABLED(...) _NMLOG3_ENABLED (LOGL_TRACE, ##__VA_ARGS__) -+#define _LOG3D_ENABLED(...) _NMLOG3_ENABLED (LOGL_DEBUG, ##__VA_ARGS__) -+#define _LOG3I_ENABLED(...) _NMLOG3_ENABLED (LOGL_INFO , ##__VA_ARGS__) -+#define _LOG3W_ENABLED(...) _NMLOG3_ENABLED (LOGL_WARN , ##__VA_ARGS__) -+#define _LOG3E_ENABLED(...) _NMLOG3_ENABLED (LOGL_ERR , ##__VA_ARGS__) -+ -+#define _LOG3T_err(errsv, ...) _NMLOG3_err (errsv, LOGL_TRACE, __VA_ARGS__) -+#define _LOG3D_err(errsv, ...) _NMLOG3_err (errsv, LOGL_DEBUG, __VA_ARGS__) -+#define _LOG3I_err(errsv, ...) _NMLOG3_err (errsv, LOGL_INFO , __VA_ARGS__) -+#define _LOG3W_err(errsv, ...) _NMLOG3_err (errsv, LOGL_WARN , __VA_ARGS__) -+#define _LOG3E_err(errsv, ...) _NMLOG3_err (errsv, LOGL_ERR , __VA_ARGS__) -+ -+#ifdef NM_MORE_LOGGING -+#define _LOG3t_ENABLED(...) _NMLOG3_ENABLED (LOGL_TRACE, ##__VA_ARGS__) -+#define _LOG3t(...) _NMLOG3 (LOGL_TRACE, __VA_ARGS__) -+#define _LOG3t_err(errsv, ...) _NMLOG3_err (errsv, LOGL_TRACE, __VA_ARGS__) -+#else -+/* still call the logging macros to get compile time checks, but they will be optimized out. */ -+#define _LOG3t_ENABLED(...) ( FALSE && (_NMLOG3_ENABLED (LOGL_TRACE, ##__VA_ARGS__)) ) -+#define _LOG3t(...) G_STMT_START { if (FALSE) { _NMLOG3 (LOGL_TRACE, __VA_ARGS__); } } G_STMT_END -+#define _LOG3t_err(errsv, ...) G_STMT_START { if (FALSE) { _NMLOG3_err (errsv, LOGL_TRACE, __VA_ARGS__); } } G_STMT_END -+#endif -+ - extern void (*_nm_logging_clear_platform_logging_cache) (void); - - /*****************************************************************************/ --- -2.9.4 - - -From 34397427cc2b8351f7068c911d085f946ed420bd Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 12:46:10 +0200 -Subject: [PATCH 04/10] manager: add logging macro _NMLOG2() for logging device - messages - -It unifies the way how we print the logging prefix, but also it -passes the ifname down for structured logging. - -(cherry picked from commit 1f6078bcf5af88095d42ea2a2be002578cd3e76e) -(cherry picked from commit 22bf75162d96a2f6aa7084ba05d4eed21e9ca5e6) ---- - src/devices/nm-device-logging.h | 2 +- - src/devices/nm-device.h | 9 ++++ - src/nm-manager.c | 97 ++++++++++++++++++++++------------------- - 3 files changed, 63 insertions(+), 45 deletions(-) - -diff --git a/src/devices/nm-device-logging.h b/src/devices/nm-device-logging.h -index 5f95a91..f0c7e59 100644 ---- a/src/devices/nm-device-logging.h -+++ b/src/devices/nm-device-logging.h -@@ -40,7 +40,7 @@ _nm_device_log_self_to_device (t *self) \ - \ - if (nm_logging_enabled (_level, _domain)) { \ - typeof (*self) *const _self = (self); \ -- const char *const _ifname = _self ? nm_device_get_iface (_nm_device_log_self_to_device (_self)) : NULL; \ -+ const char *const _ifname = _nm_device_get_iface (_nm_device_log_self_to_device (_self)); \ - \ - nm_log_obj (_level, _domain, \ - _ifname, NULL, \ -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index edbb0aa..7229fb9 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -421,6 +421,15 @@ NMPlatform *nm_device_get_platform (NMDevice *self); - - const char * nm_device_get_udi (NMDevice *dev); - const char * nm_device_get_iface (NMDevice *dev); -+ -+static inline const char * -+_nm_device_get_iface (NMDevice *device) -+{ -+ /* like nm_device_get_iface(), but gracefully accept NULL without -+ * asserting. */ -+ return device ? nm_device_get_iface (device) : NULL; -+} -+ - int nm_device_get_ifindex (NMDevice *dev); - gboolean nm_device_is_software (NMDevice *dev); - gboolean nm_device_is_real (NMDevice *dev); -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 9a7b123..098d00d 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -222,19 +222,41 @@ NM_DEFINE_SINGLETON_INSTANCE (NMManager); - #define _NMLOG_PREFIX_NAME "manager" - #define _NMLOG(level, domain, ...) \ - G_STMT_START { \ -- const NMLogLevel __level = (level); \ -- const NMLogDomain __domain = (domain); \ -+ const NMLogLevel _level = (level); \ -+ const NMLogDomain _domain = (domain); \ - \ -- if (nm_logging_enabled (__level, __domain)) { \ -- const NMManager *const __self = (self); \ -- char __sbuf[32]; \ -+ if (nm_logging_enabled (_level, _domain)) { \ -+ const NMManager *const _self = (self); \ -+ char _sbuf[32]; \ - \ -- _nm_log (__level, __domain, 0, NULL, NULL, \ -+ _nm_log (_level, _domain, 0, NULL, NULL, \ - "%s%s: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ - _NMLOG_PREFIX_NAME, \ -- (__self && __self != singleton_instance) \ -- ? nm_sprintf_buf (__sbuf, "[%p]", __self) \ -- : "" \ -+ ((_self && _self != singleton_instance) \ -+ ? nm_sprintf_buf (_sbuf, "[%p]", _self) \ -+ : "") \ -+ _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ -+ } \ -+ } G_STMT_END -+ -+#define _NMLOG2(level, domain, device, ...) \ -+ G_STMT_START { \ -+ const NMLogLevel _level = (level); \ -+ const NMLogDomain _domain = (domain); \ -+ \ -+ if (nm_logging_enabled (_level, _domain)) { \ -+ const NMManager *const _self = (self); \ -+ const char *const _ifname = _nm_device_get_iface (device); \ -+ char _sbuf[32]; \ -+ \ -+ _nm_log (_level, _domain, 0, \ -+ _ifname, NULL, \ -+ "%s%s: %s%s%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ -+ _NMLOG_PREFIX_NAME, \ -+ ((_self && _self != singleton_instance) \ -+ ? nm_sprintf_buf (_sbuf, "[%p]", _self) \ -+ : ""), \ -+ NM_PRINT_FMT_QUOTED (_ifname, "(", _ifname, "): ", "") \ - _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ - } \ - } G_STMT_END -@@ -983,8 +1005,8 @@ remove_device (NMManager *self, - NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - gboolean unmanage = FALSE; - -- _LOGD (LOGD_DEVICE, "(%s): removing device (allow_unmanage %d, managed %d)", -- nm_device_get_iface (device), allow_unmanage, nm_device_get_managed (device, FALSE)); -+ _LOG2D (LOGD_DEVICE, device, "removing device (allow_unmanage %d, managed %d)", -+ allow_unmanage, nm_device_get_managed (device, FALSE)); - - if (allow_unmanage && nm_device_get_managed (device, FALSE)) { - -@@ -1481,9 +1503,7 @@ manager_update_radio_enabled (NMManager *self, - NMDevice *device = NM_DEVICE (iter->data); - - if (nm_device_get_rfkill_type (device) == rstate->rtype) { -- _LOGD (LOGD_RFKILL, "(%s): setting radio %s", -- nm_device_get_iface (device), -- enabled ? "enabled" : "disabled"); -+ _LOG2D (LOGD_RFKILL, device, "setting radio %s", enabled ? "enabled" : "disabled"); - nm_device_set_enabled (device, enabled); - } - } -@@ -1724,13 +1744,13 @@ get_existing_connection (NMManager *self, - if (master_ifindex) { - master = nm_manager_get_device_by_ifindex (self, master_ifindex); - if (!master) { -- _LOGD (LOGD_DEVICE, "(%s): cannot generate connection for slave before its master (%s/%d)", -- nm_device_get_iface (device), nm_platform_link_get_name (NM_PLATFORM_GET, master_ifindex), master_ifindex); -+ _LOG2D (LOGD_DEVICE, device, "cannot generate connection for slave before its master (%s/%d)", -+ nm_platform_link_get_name (NM_PLATFORM_GET, master_ifindex), master_ifindex); - return NULL; - } - if (!nm_device_get_act_request (master)) { -- _LOGD (LOGD_DEVICE, "(%s): cannot generate connection for slave before master %s activates", -- nm_device_get_iface (device), nm_device_get_iface (master)); -+ _LOG2D (LOGD_DEVICE, device, "cannot generate connection for slave before master %s activates", -+ nm_device_get_iface (master)); - return NULL; - } - } -@@ -1811,20 +1831,18 @@ get_existing_connection (NMManager *self, - } - - if (matched) { -- _LOGI (LOGD_DEVICE, "(%s): found matching connection '%s' (%s)%s", -- nm_device_get_iface (device), -- nm_settings_connection_get_id (matched), -- nm_settings_connection_get_uuid (matched), -- assume_state_connection_uuid && nm_streq (assume_state_connection_uuid, nm_settings_connection_get_uuid (matched)) -- ? " (indicated)" : " (guessed)"); -+ _LOG2I (LOGD_DEVICE, device, "found matching connection '%s' (%s)%s", -+ nm_settings_connection_get_id (matched), -+ nm_settings_connection_get_uuid (matched), -+ assume_state_connection_uuid && nm_streq (assume_state_connection_uuid, nm_settings_connection_get_uuid (matched)) -+ ? " (indicated)" : " (guessed)"); - g_object_unref (connection); - nm_device_assume_state_reset (device); - return matched; - } - -- _LOGD (LOGD_DEVICE, "(%s): generated connection '%s'", -- nm_device_get_iface (device), -- nm_connection_get_id (connection)); -+ _LOG2D (LOGD_DEVICE, device, "generated connection '%s'", -+ nm_connection_get_id (connection)); - - nm_device_assume_state_reset (device); - -@@ -1837,8 +1855,7 @@ get_existing_connection (NMManager *self, - if (out_generated) - *out_generated = TRUE; - } else { -- _LOGW (LOGD_SETTINGS, "(%s) Couldn't save generated connection '%s': %s", -- nm_device_get_iface (device), -+ _LOG2W (LOGD_SETTINGS, device, "Couldn't save generated connection '%s': %s", - nm_connection_get_id (connection), - error->message); - g_clear_error (&error); -@@ -1873,13 +1890,11 @@ recheck_assume_connection (NMManager *self, - - connection = get_existing_connection (self, device, &generated); - if (!connection) { -- _LOGD (LOGD_DEVICE, "(%s): can't assume; no connection", -- nm_device_get_iface (device)); -+ _LOG2D (LOGD_DEVICE, device, "can't assume; no connection"); - return FALSE; - } - -- _LOGD (LOGD_DEVICE, "(%s): will attempt to assume connection", -- nm_device_get_iface (device)); -+ _LOG2D (LOGD_DEVICE, device, "will attempt to assume connection"); - - nm_device_sys_iface_state_set (device, - generated -@@ -1926,9 +1941,7 @@ recheck_assume_connection (NMManager *self, - } - - if (generated) { -- _LOGD (LOGD_DEVICE, "(%s): connection assumption failed. Deleting generated connection", -- nm_device_get_iface (device)); -- -+ _LOG2D (LOGD_DEVICE, device, "connection assumption failed. Deleting generated connection"); - nm_settings_connection_delete (connection, NULL, NULL); - } else { - if (nm_device_sys_iface_state_get (device) == NM_DEVICE_SYS_IFACE_STATE_ASSUME) -@@ -2182,7 +2195,7 @@ add_device (NMManager *self, NMDevice *device, GError **error) - manager_sleeping (self)); - - dbus_path = nm_exported_object_export (NM_EXPORTED_OBJECT (device)); -- _LOGI (LOGD_DEVICE, "(%s): new %s device (%s)", iface, type_desc, dbus_path); -+ _LOG2I (LOGD_DEVICE, device, "new %s device (%s)", type_desc, dbus_path); - - nm_settings_device_added (priv->settings, device); - g_signal_emit (self, signals[INTERNAL_DEVICE_ADDED], 0, device); -@@ -2221,8 +2234,7 @@ factory_device_added_cb (NMDeviceFactory *factory, - add_device (self, device, NULL); - _device_realize_finish (self, device, NULL); - } else { -- _LOGW (LOGD_DEVICE, "(%s): failed to realize device: %s", -- nm_device_get_iface (device), error->message); -+ _LOG2W (LOGD_DEVICE, device, "failed to realize device: %s", error->message); - g_error_free (error); - } - } -@@ -2414,9 +2426,7 @@ _platform_link_cb_idle (PlatformLinkCbData *data) - nm_device_sys_iface_state_set (device, NM_DEVICE_SYS_IFACE_STATE_REMOVED); - /* Our software devices stick around until their connection is removed */ - if (!nm_device_unrealize (device, FALSE, &error)) { -- _LOGW (LOGD_DEVICE, "(%s): failed to unrealize: %s", -- nm_device_get_iface (device), -- error->message); -+ _LOG2W (LOGD_DEVICE, device, "failed to unrealize: %s", error->message); - g_clear_error (&error); - remove_device (self, device, FALSE, TRUE); - } -@@ -5172,8 +5182,7 @@ handle_firmware_changed (gpointer user_data) - - if ( nm_device_get_firmware_missing (candidate) - && (state == NM_DEVICE_STATE_UNAVAILABLE)) { -- _LOGI (LOGD_CORE, "(%s): firmware may now be available", -- nm_device_get_iface (candidate)); -+ _LOG2I (LOGD_CORE, candidate, "firmware may now be available"); - - /* Re-set unavailable state to try bringing the device up again */ - nm_device_state_changed (candidate, --- -2.9.4 - - -From da914ee814f86d87eda5676fa7a1cbf5bcbf264e Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 12:46:10 +0200 -Subject: [PATCH 05/10] manager: add logging macro _NMLOG3() for logging - connection messages - -It unifies the way how we print the logging prefix, but also it -passes the con_uuid down for structured logging. - -(cherry picked from commit 6962f14d4a74c192a81604b7de40a94d13530dc6) -(cherry picked from commit 36b99ccf5f430f0e70478e5bae314e7893850cde) ---- - libnm-core/nm-core-internal.h | 18 ++++++++++++++++ - src/nm-manager.c | 50 +++++++++++++++++++++++++++++++------------ - 2 files changed, 54 insertions(+), 14 deletions(-) - -diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h -index ac292bf..91967ce 100644 ---- a/libnm-core/nm-core-internal.h -+++ b/libnm-core/nm-core-internal.h -@@ -343,6 +343,24 @@ _nm_setting_bond_get_option_type (NMSettingBond *setting, const char *name); - - /*****************************************************************************/ - -+/* nm_connection_get_uuid() asserts against NULL, which is the right thing to -+ * do in order to catch bugs. However, sometimes that behavior is inconvenient. -+ * Just try or return NULL. */ -+ -+static inline const char * -+_nm_connection_get_id (NMConnection *connection) -+{ -+ return connection ? nm_connection_get_id (connection) : NULL; -+} -+ -+static inline const char * -+_nm_connection_get_uuid (NMConnection *connection) -+{ -+ return connection ? nm_connection_get_uuid (connection) : NULL; -+} -+ -+/*****************************************************************************/ -+ - typedef enum { - NM_BOND_MODE_UNKNOWN = 0, - NM_BOND_MODE_ROUNDROBIN, -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 098d00d..da94aac 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -261,6 +261,29 @@ NM_DEFINE_SINGLETON_INSTANCE (NMManager); - } \ - } G_STMT_END - -+#define _NMLOG3(level, domain, connection, ...) \ -+ G_STMT_START { \ -+ const NMLogLevel _level = (level); \ -+ const NMLogDomain _domain = (domain); \ -+ \ -+ if (nm_logging_enabled (_level, _domain)) { \ -+ const NMManager *const _self = (self); \ -+ NMConnection *const _connection = (connection); \ -+ const char *const _con_id = _nm_connection_get_id (_connection); \ -+ char _sbuf[32]; \ -+ \ -+ _nm_log (_level, _domain, 0, \ -+ NULL, _nm_connection_get_uuid (_connection), \ -+ "%s%s: %s%s%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ -+ _NMLOG_PREFIX_NAME, \ -+ ((_self && _self != singleton_instance) \ -+ ? nm_sprintf_buf (_sbuf, "[%p]", _self) \ -+ : ""), \ -+ NM_PRINT_FMT_QUOTED (_con_id, "(", _con_id, ") ", "") \ -+ _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ -+ } \ -+ } G_STMT_END -+ - /*****************************************************************************/ - - static NM_CACHED_QUARK_FCN ("autoconnect-root", autoconnect_root_quark) -@@ -1260,8 +1283,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection) - - iface = nm_manager_get_connection_iface (self, connection, &parent, &error); - if (!iface) { -- _LOGD (LOGD_DEVICE, "(%s) can't get a name of a virtual device: %s", -- nm_connection_get_id (connection), error->message); -+ _LOG3D (LOGD_DEVICE, connection, "can't get a name of a virtual device: %s", -+ error->message); - g_error_free (error); - return NULL; - } -@@ -1272,8 +1295,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection) - - if (nm_device_check_connection_compatible (candidate, connection)) { - if (nm_device_is_real (candidate)) { -- _LOGD (LOGD_DEVICE, "(%s) already created virtual interface name %s", -- nm_connection_get_id (connection), iface); -+ _LOG3D (LOGD_DEVICE, connection, "already created virtual interface name %s", -+ iface); - return NULL; - } - -@@ -1287,27 +1310,26 @@ system_create_virtual_device (NMManager *self, NMConnection *connection) - - factory = nm_device_factory_manager_find_factory_for_connection (connection); - if (!factory) { -- _LOGE (LOGD_DEVICE, "(%s:%s) NetworkManager plugin for '%s' unavailable", -- nm_connection_get_id (connection), iface, -+ _LOG3E (LOGD_DEVICE, connection, "(%s) NetworkManager plugin for '%s' unavailable", -+ iface, - nm_connection_get_connection_type (connection)); - return NULL; - } - - device = nm_device_factory_create_device (factory, iface, NULL, connection, NULL, &error); - if (!device) { -- _LOGW (LOGD_DEVICE, "(%s) factory can't create the device: %s", -- nm_connection_get_id (connection), error->message); -+ _LOG3W (LOGD_DEVICE, connection, "factory can't create the device: %s", -+ error->message); - g_error_free (error); - return NULL; - } - -- _LOGD (LOGD_DEVICE, "(%s) create virtual device %s", -- nm_connection_get_id (connection), -+ _LOG3D (LOGD_DEVICE, connection, "create virtual device %s", - nm_device_get_iface (device)); - - if (!add_device (self, device, &error)) { -- _LOGW (LOGD_DEVICE, "(%s) can't register the device with manager: %s", -- nm_connection_get_id (connection), error->message); -+ _LOG3W (LOGD_DEVICE, connection, "can't register the device with manager: %s", -+ error->message); - g_error_free (error); - g_object_unref (device); - return NULL; -@@ -1335,8 +1357,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection) - - /* Create any backing resources the device needs */ - if (!nm_device_create_and_realize (device, connection, parent, &error)) { -- _LOGW (LOGD_DEVICE, "(%s) couldn't create the device: %s", -- nm_connection_get_id (connection), error->message); -+ _LOG3W (LOGD_DEVICE, connection, "couldn't create the device: %s", -+ error->message); - g_error_free (error); - remove_device (self, device, FALSE, TRUE); - return NULL; --- -2.9.4 - - -From b4dc736b2b6c60324461e128b9f57364d127cc6a Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 13:13:55 +0200 -Subject: [PATCH 06/10] manager: add "rfkill" prefix to related logging - messages - -(cherry picked from commit dd53c879d2395de667fefb9bd8fc1125b85a7977) -(cherry picked from commit 01fd9df6e589ef623a069cb6c46230ba77ad6b0a) ---- - src/nm-manager.c | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index da94aac..d7437e6 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1525,7 +1525,7 @@ manager_update_radio_enabled (NMManager *self, - NMDevice *device = NM_DEVICE (iter->data); - - if (nm_device_get_rfkill_type (device) == rstate->rtype) { -- _LOG2D (LOGD_RFKILL, device, "setting radio %s", enabled ? "enabled" : "disabled"); -+ _LOG2D (LOGD_RFKILL, device, "rfkill: setting radio %s", enabled ? "enabled" : "disabled"); - nm_device_set_enabled (device, enabled); - } - } -@@ -1570,14 +1570,14 @@ manager_rfkill_update_one_type (NMManager *self, - - /* Print out all states affecting device enablement */ - if (rstate->desc) { -- _LOGD (LOGD_RFKILL, "%s hw-enabled %d sw-enabled %d", -+ _LOGD (LOGD_RFKILL, "rfkill: %s hw-enabled %d sw-enabled %d", - rstate->desc, rstate->hw_enabled, rstate->sw_enabled); - } - - /* Log new killswitch state */ - new_rfkilled = rstate->hw_enabled && rstate->sw_enabled; - if (old_rfkilled != new_rfkilled) { -- _LOGI (LOGD_RFKILL, "%s now %s by radio killswitch", -+ _LOGI (LOGD_RFKILL, "rfkill: %s now %s by radio killswitch", - rstate->desc, - new_rfkilled ? "enabled" : "disabled"); - } -@@ -4531,7 +4531,7 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) - gboolean enabled = radio_enabled_for_rstate (rstate, TRUE); - - if (rstate->desc) { -- _LOGD (LOGD_RFKILL, "%s %s devices (hw_enabled %d, sw_enabled %d, user_enabled %d)", -+ _LOGD (LOGD_RFKILL, "rfkill: %s %s devices (hw_enabled %d, sw_enabled %d, user_enabled %d)", - enabled ? "enabling" : "disabling", - rstate->desc, rstate->hw_enabled, rstate->sw_enabled, rstate->user_enabled); - } -@@ -5128,7 +5128,7 @@ nm_manager_start (NMManager *self, GError **error) - update_rstate_from_rfkill (priv->rfkill_mgr, rstate); - - if (rstate->desc) { -- _LOGI (LOGD_RFKILL, "%s %s by radio killswitch; %s by state file", -+ _LOGI (LOGD_RFKILL, "rfkill: %s %s by radio killswitch; %s by state file", - rstate->desc, - (rstate->hw_enabled && rstate->sw_enabled) ? "enabled" : "disabled", - rstate->user_enabled ? "enabled" : "disabled"); -@@ -5836,12 +5836,12 @@ rfkill_change (NMManager *self, const char *desc, RfKillType rtype, gboolean ena - fd = open ("/dev/rfkill", O_RDWR | O_CLOEXEC); - if (fd < 0) { - if (errno == EACCES) -- _LOGW (LOGD_RFKILL, "(%s): failed to open killswitch device", desc); -+ _LOGW (LOGD_RFKILL, "rfkill: (%s): failed to open killswitch device", desc); - return; - } - - if (fcntl (fd, F_SETFL, O_NONBLOCK) < 0) { -- _LOGW (LOGD_RFKILL, "(%s): failed to set killswitch device for " -+ _LOGW (LOGD_RFKILL, "rfkill: (%s): failed to set killswitch device for " - "non-blocking operation", desc); - close (fd); - return; -@@ -5863,14 +5863,14 @@ rfkill_change (NMManager *self, const char *desc, RfKillType rtype, gboolean ena - - len = write (fd, &event, sizeof (event)); - if (len < 0) { -- _LOGW (LOGD_RFKILL, "(%s): failed to change WiFi killswitch state: (%d) %s", -+ _LOGW (LOGD_RFKILL, "rfkill: (%s): failed to change WiFi killswitch state: (%d) %s", - desc, errno, g_strerror (errno)); - } else if (len == sizeof (event)) { -- _LOGI (LOGD_RFKILL, "%s hardware radio set %s", -+ _LOGI (LOGD_RFKILL, "rfkill: %s hardware radio set %s", - desc, enabled ? "enabled" : "disabled"); - } else { - /* Failed to write full structure */ -- _LOGW (LOGD_RFKILL, "(%s): failed to change WiFi killswitch state", desc); -+ _LOGW (LOGD_RFKILL, "rfkill: (%s): failed to change WiFi killswitch state", desc); - } - - close (fd); -@@ -5889,7 +5889,7 @@ manager_radio_user_toggled (NMManager *self, - return; - - if (rstate->desc) { -- _LOGD (LOGD_RFKILL, "(%s): setting radio %s by user", -+ _LOGD (LOGD_RFKILL, "rfkill: (%s): setting radio %s by user", - rstate->desc, - enabled ? "enabled" : "disabled"); - } --- -2.9.4 - - -From cf805b925c93cae145e354afd0cc05844ec3cd62 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 13:30:08 +0200 -Subject: [PATCH 07/10] manager: add more logging to - recheck_assume_connection() - -and give all lines a logging prefix. - -(cherry picked from commit 94534e032788e69690c2affcd09d1f306ffa3840) -(cherry picked from commit 7e2d64a8b23e4606f15fc66ebf953d5effb16ac3) ---- - src/nm-manager.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index d7437e6..3c190eb 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1901,22 +1901,27 @@ recheck_assume_connection (NMManager *self, - - if (!nm_device_get_managed (device, FALSE)) { - nm_device_assume_state_reset (device); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume because %s", "not managed"); - return FALSE; - } - - state = nm_device_get_state (device); - if (state > NM_DEVICE_STATE_DISCONNECTED) { - nm_device_assume_state_reset (device); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume due to device state %s", -+ nm_device_state_to_str (state)); - return FALSE; - } - - connection = get_existing_connection (self, device, &generated); - if (!connection) { -- _LOG2D (LOGD_DEVICE, device, "can't assume; no connection"); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume because %s", "no connection was generated"); - return FALSE; - } - -- _LOG2D (LOGD_DEVICE, device, "will attempt to assume connection"); -+ _LOG2D (LOGD_DEVICE, device, "assume: will attempt to assume %sconnection %s", -+ generated ? "generated " : "", -+ nm_connection_get_uuid (NM_CONNECTION (connection))); - - nm_device_sys_iface_state_set (device, - generated -@@ -1951,7 +1956,7 @@ recheck_assume_connection (NMManager *self, - &error); - - if (!active) { -- _LOGW (LOGD_DEVICE, "assumed connection %s failed to activate: %s", -+ _LOGW (LOGD_DEVICE, "assume: assumed connection %s failed to activate: %s", - nm_connection_get_path (NM_CONNECTION (connection)), - error->message); - g_error_free (error); -@@ -1963,7 +1968,7 @@ recheck_assume_connection (NMManager *self, - } - - if (generated) { -- _LOG2D (LOGD_DEVICE, device, "connection assumption failed. Deleting generated connection"); -+ _LOG2D (LOGD_DEVICE, device, "assume: deleting generated connection after assuming failed"); - nm_settings_connection_delete (connection, NULL, NULL); - } else { - if (nm_device_sys_iface_state_get (device) == NM_DEVICE_SYS_IFACE_STATE_ASSUME) --- -2.9.4 - - -From 7efa2f15760e2ae7e550ad11f0bb49e66748334b Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 13:44:07 +0200 -Subject: [PATCH 08/10] device: remove logging for emitting RECHECK_ASSUME - signal - -The device's RECHECK_ASSUME signal has only NMManager as subscriber -and it immediately calls recheck_assume_connection(). - -With the previous commit, recheck_assume_connection() always logs -a debug message, so we don't need this duplicate message anymore. - -(cherry picked from commit cc47a6a8b2c16b0ea1df95384b794a2e8d47cfeb) -(cherry picked from commit c254277f409f629fe0b728e9a2f87c418181762d) ---- - src/devices/nm-device.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index fdf88c9..36ba9f9 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -4392,10 +4392,9 @@ nm_device_emit_recheck_assume (gpointer user_data) - priv = NM_DEVICE_GET_PRIVATE (self); - - priv->recheck_assume_id = 0; -- if (!nm_device_get_act_request (self)) { -- _LOGD (LOGD_DEVICE, "emit RECHECK_ASSUME signal"); -+ if (!nm_device_get_act_request (self)) - g_signal_emit (self, signals[RECHECK_ASSUME], 0); -- } -+ - return G_SOURCE_REMOVE; - } - --- -2.9.4 - - -From cb7d9f5ed5ccae171712d3cdc109978bb34f5607 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 16:41:06 +0200 -Subject: [PATCH 09/10] manager: cleanup logging message during - recheck_assume_connection()/get_existing_connection() - -recheck_assume_connection() calls get_existing_connection(). We want *one* logging -message telling what's happening. Let get_existing_connection() log "assume:" -messages and remove duplicate messages from recheck_assume_connection(). - -(cherry picked from commit 962f8f42d9d04eeb794d931ccaad775ca05233e2) -(cherry picked from commit 70b4684d7e975e2ce120e11c27b8d3f7ac2e0cc2) ---- - src/nm-manager.c | 52 ++++++++++++++++++++++++---------------------------- - 1 file changed, 24 insertions(+), 28 deletions(-) - -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 3c190eb..fa220f1 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1744,7 +1744,7 @@ get_existing_connection (NMManager *self, - gboolean *out_generated) - { - NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); -- NMConnection *connection = NULL; -+ gs_unref_object NMConnection *connection = NULL; - NMSettingsConnection *added = NULL; - GError *error = NULL; - NMDevice *master = NULL; -@@ -1766,13 +1766,15 @@ get_existing_connection (NMManager *self, - if (master_ifindex) { - master = nm_manager_get_device_by_ifindex (self, master_ifindex); - if (!master) { -- _LOG2D (LOGD_DEVICE, device, "cannot generate connection for slave before its master (%s/%d)", -- nm_platform_link_get_name (NM_PLATFORM_GET, master_ifindex), master_ifindex); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume because " -+ "cannot generate connection for slave before its master (%s/%d)", -+ nm_platform_link_get_name (NM_PLATFORM_GET, master_ifindex), master_ifindex); - return NULL; - } - if (!nm_device_get_act_request (master)) { -- _LOG2D (LOGD_DEVICE, device, "cannot generate connection for slave before master %s activates", -- nm_device_get_iface (master)); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume because " -+ "cannot generate connection for slave before master %s activates", -+ nm_device_get_iface (master)); - return NULL; - } - } -@@ -1788,6 +1790,7 @@ get_existing_connection (NMManager *self, - if (!connection) { - if (!maybe_later) - nm_device_assume_state_reset (device); -+ _LOG2D (LOGD_DEVICE, device, "assume: don't assume due to failure to generate connection"); - return NULL; - } - -@@ -1853,38 +1856,36 @@ get_existing_connection (NMManager *self, - } - - if (matched) { -- _LOG2I (LOGD_DEVICE, device, "found matching connection '%s' (%s)%s", -+ _LOG2I (LOGD_DEVICE, device, "assume: will attempt to assume matching connection '%s' (%s)%s", - nm_settings_connection_get_id (matched), - nm_settings_connection_get_uuid (matched), - assume_state_connection_uuid && nm_streq (assume_state_connection_uuid, nm_settings_connection_get_uuid (matched)) - ? " (indicated)" : " (guessed)"); -- g_object_unref (connection); - nm_device_assume_state_reset (device); - return matched; - } - -- _LOG2D (LOGD_DEVICE, device, "generated connection '%s'", -- nm_connection_get_id (connection)); -+ _LOG2D (LOGD_DEVICE, device, "assume: generated connection '%s' (%s)", -+ nm_connection_get_id (connection), -+ nm_connection_get_uuid (connection)); - - nm_device_assume_state_reset (device); - - added = nm_settings_add_connection (priv->settings, connection, FALSE, &error); -- if (added) { -- nm_settings_connection_set_flags (NM_SETTINGS_CONNECTION (added), -- NM_SETTINGS_CONNECTION_FLAGS_NM_GENERATED | -- NM_SETTINGS_CONNECTION_FLAGS_VOLATILE, -- TRUE); -- if (out_generated) -- *out_generated = TRUE; -- } else { -- _LOG2W (LOGD_SETTINGS, device, "Couldn't save generated connection '%s': %s", -+ if (!added) { -+ _LOG2W (LOGD_SETTINGS, device, "assume: failure to save generated connection '%s': %s", - nm_connection_get_id (connection), - error->message); -- g_clear_error (&error); -+ g_error_free (error); -+ return NULL; - } -- g_object_unref (connection); - -- return added ? added : NULL; -+ nm_settings_connection_set_flags (NM_SETTINGS_CONNECTION (added), -+ NM_SETTINGS_CONNECTION_FLAGS_NM_GENERATED | -+ NM_SETTINGS_CONNECTION_FLAGS_VOLATILE, -+ TRUE); -+ NM_SET_OUT (out_generated, TRUE); -+ return added; - } - - static gboolean -@@ -1914,14 +1915,9 @@ recheck_assume_connection (NMManager *self, - } - - connection = get_existing_connection (self, device, &generated); -- if (!connection) { -- _LOG2D (LOGD_DEVICE, device, "assume: don't assume because %s", "no connection was generated"); -+ /* log no reason. get_existing_connection() already does it. */ -+ if (!connection) - return FALSE; -- } -- -- _LOG2D (LOGD_DEVICE, device, "assume: will attempt to assume %sconnection %s", -- generated ? "generated " : "", -- nm_connection_get_uuid (NM_CONNECTION (connection))); - - nm_device_sys_iface_state_set (device, - generated --- -2.9.4 - - -From a0ded04b454b32dfa6a0d3bb357e950941a65684 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 17:04:33 +0200 -Subject: [PATCH 10/10] device: suppress logging and return error reason from - nm_device_generate_connection() - -Don't log in a function that basically just inspects state, without -mutating it. Instead, pass the reason why a connection could not be -generated to the caller so that we have one sensible log message. - -(cherry picked from commit 0c26ffd638b1db490ae72b105feb697b61fc43cb) -(cherry picked from commit 78ff06c539b36521a82d4d65b573678a1f91b531) ---- - src/devices/nm-device.c | 56 +++++++++++++++++++++++++++---------------------- - src/devices/nm-device.h | 3 ++- - src/nm-manager.c | 6 ++++-- - 3 files changed, 37 insertions(+), 28 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 36ba9f9..246a18f 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -4111,29 +4111,37 @@ nm_device_master_update_slave_connection (NMDevice *self, - } - - NMConnection * --nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_maybe_later) -+nm_device_generate_connection (NMDevice *self, -+ NMDevice *master, -+ gboolean *out_maybe_later, -+ GError **error) - { - NMDeviceClass *klass = NM_DEVICE_GET_CLASS (self); - NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); - const char *ifname = nm_device_get_iface (self); -- NMConnection *connection; -+ gs_unref_object NMConnection *connection = NULL; - NMSetting *s_con; - NMSetting *s_ip4; - NMSetting *s_ip6; - char uuid[37]; - const char *ip4_method, *ip6_method; -- GError *error = NULL; -+ GError *local = NULL; - const NMPlatformLink *pllink; - - NM_SET_OUT (out_maybe_later, FALSE); - - /* If update_connection() is not implemented, just fail. */ -- if (!klass->update_connection) -+ if (!klass->update_connection) { -+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "device class %s does not support generating a connection", -+ G_OBJECT_TYPE_NAME (self)); - return NULL; -+ } - - /* Return NULL if device is unconfigured. */ - if (!device_has_config (self)) { -- _LOGD (LOGD_DEVICE, "device has no existing configuration"); -+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "device has no existing configuration"); - return NULL; - } - -@@ -4156,12 +4164,11 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m - if (!nm_device_master_update_slave_connection (master, - self, - connection, -- &error)) -- { -- _LOGE (LOGD_DEVICE, "master device '%s' failed to update slave connection: %s", -- nm_device_get_iface (master), error->message); -- g_error_free (error); -- g_object_unref (connection); -+ &local)) { -+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "master device '%s' failed to update slave connection: %s", -+ nm_device_get_iface (master), local->message); -+ g_error_free (local); - return NULL; - } - } else { -@@ -4174,7 +4181,6 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m - - pllink = nm_platform_link_get (nm_device_get_platform (self), priv->ifindex); - if (pllink && pllink->inet6_token.id) { -- _LOGD (LOGD_IP6, "IPv6 tokenized identifier present"); - g_object_set (s_ip6, - NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, NM_IN6_ADDR_GEN_MODE_EUI64, - NM_SETTING_IP6_CONFIG_TOKEN, nm_utils_inet6_interface_identifier_to_token (pllink->inet6_token, NULL), -@@ -4184,11 +4190,11 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m - - klass->update_connection (self, connection); - -- /* Check the connection in case of update_connection() bug. */ -- if (!nm_connection_verify (connection, &error)) { -- _LOGE (LOGD_DEVICE, "Generated connection does not verify: %s", error->message); -- g_clear_error (&error); -- g_object_unref (connection); -+ if (!nm_connection_verify (connection, &local)) { -+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "generated connection does not verify: %s", -+ local->message); -+ g_error_free (local); - return NULL; - } - -@@ -4201,28 +4207,28 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m - && g_strcmp0 (ip6_method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0 - && !nm_setting_connection_get_master (NM_SETTING_CONNECTION (s_con)) - && !priv->slaves) { -- _LOGD (LOGD_DEVICE, "ignoring generated connection (no IP and not in master-slave relationship)"); - NM_SET_OUT (out_maybe_later, TRUE); -- g_object_unref (connection); -- connection = NULL; -+ g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "ignoring generated connection (no IP and not in master-slave relationship)"); -+ return NULL; - } - - /* Ignore any IPv6LL-only, not master connections without slaves, - * unless they are in the assume-ipv6ll-only list. - */ -- if ( connection -- && g_strcmp0 (ip4_method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED) == 0 -+ if ( g_strcmp0 (ip4_method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED) == 0 - && g_strcmp0 (ip6_method, NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL) == 0 - && !nm_setting_connection_get_master (NM_SETTING_CONNECTION (s_con)) - && !priv->slaves - && !nm_config_data_get_assume_ipv6ll_only (NM_CONFIG_GET_DATA, self)) { - _LOGD (LOGD_DEVICE, "ignoring generated connection (IPv6LL-only and not in master-slave relationship)"); - NM_SET_OUT (out_maybe_later, TRUE); -- g_object_unref (connection); -- connection = NULL; -+ g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, -+ "ignoring generated connection (IPv6LL-only and not in master-slave relationship)"); -+ return NULL; - } - -- return connection; -+ return g_steal_pointer (&connection); - } - - gboolean -diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h -index 7229fb9..50d9b97 100644 ---- a/src/devices/nm-device.h -+++ b/src/devices/nm-device.h -@@ -498,7 +498,8 @@ gboolean nm_device_has_carrier (NMDevice *dev); - - NMConnection * nm_device_generate_connection (NMDevice *self, - NMDevice *master, -- gboolean *out_maybe_later); -+ gboolean *out_maybe_later, -+ GError **error); - - gboolean nm_device_master_update_slave_connection (NMDevice *master, - NMDevice *slave, -diff --git a/src/nm-manager.c b/src/nm-manager.c -index fa220f1..abcd0ee 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c -@@ -1786,11 +1786,13 @@ get_existing_connection (NMManager *self, - * update_connection() implemented, otherwise nm_device_generate_connection() - * returns NULL. - */ -- connection = nm_device_generate_connection (device, master, &maybe_later); -+ connection = nm_device_generate_connection (device, master, &maybe_later, &error); - if (!connection) { - if (!maybe_later) - nm_device_assume_state_reset (device); -- _LOG2D (LOGD_DEVICE, device, "assume: don't assume due to failure to generate connection"); -+ _LOG2D (LOGD_DEVICE, device, "assume: cannot generate connection: %s", -+ error->message); -+ g_error_free (error); - return NULL; - } - --- -2.9.4 - diff --git a/SOURCES/0025-team-clean-runner-tx-hash-on-set-rh1541922.patch b/SOURCES/0025-team-clean-runner-tx-hash-on-set-rh1541922.patch new file mode 100644 index 0000000..8fc6bf9 --- /dev/null +++ b/SOURCES/0025-team-clean-runner-tx-hash-on-set-rh1541922.patch @@ -0,0 +1,110 @@ +From 01d1f64ad408947fbeaebbf2768828504044377f Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Mon, 5 Feb 2018 17:50:33 +0100 +Subject: [PATCH 1/2] nmcli: team: clear runner-tx-hash before adding new + hashes + +https://bugzilla.redhat.com/show_bug.cgi?id=1541922 +(cherry picked from commit 350dbb55abf3a80267c398e6f64c2cee4645475a) +--- + clients/common/nm-meta-setting-desc.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index d829fa7d4..85b272cbc 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -3976,6 +3976,9 @@ _set_fcn_team_runner_tx_hash (ARGS_SET_FCN) + return FALSE; + } + ++ while (nm_setting_team_get_num_runner_tx_hash (NM_SETTING_TEAM (setting))) ++ nm_setting_team_remove_runner_tx_hash (NM_SETTING_TEAM (setting), 0); ++ + while (strv && strv[i]) + nm_setting_team_add_runner_tx_hash (NM_SETTING_TEAM (setting), strv[i++]); + g_strfreev (strv); +-- +2.14.3 + + +From 11f0ca1f23e000e7cbd246a176d8470c8b6ee8a6 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Tue, 6 Feb 2018 16:44:11 +0100 +Subject: [PATCH 2/2] nmcli: team: do strict checking on runner-tx-hashes + +Substrings matching the heading of valid values were allowed if not +ambiguous (e.g.: "et" for "eth"). Moreover, upper case variants were +accepted too. +Do a plain string comparison check against the valid values. +Improve also the error message: give a list of valid tx-hashes. + +(cherry picked from commit fd5b3f802ec204392ada9ee9b75978059323fab4) +--- + clients/common/nm-meta-setting-desc.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index 85b272cbc..94404e908 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -3950,12 +3950,19 @@ _validate_fcn_team_config (const char *value, char **out_to_free, GError **error + } + + static gboolean +-_is_valid_team_runner_tx_hash_element (const char *tx_hash_element) ++_is_valid_team_runner_tx_hash_element (const char *tx_hash_element, ++ GError **error) + { +- const char *valid_tx_hashes[] = { "eth", "vlan", "ipv4", "ipv6", "ip", +- "l3", "tcp", "udp", "sctp", "l4", NULL }; +- if (nmc_string_is_valid (tx_hash_element, valid_tx_hashes, NULL)) ++ nm_assert (!error || !*error); ++ ++ if (NM_IN_STRSET (tx_hash_element, ++ "eth", "vlan", "ipv4", "ipv6", "ip", ++ "l3", "tcp", "udp", "sctp", "l4")) { + return TRUE; ++ } ++ ++ g_set_error (error, 1, 0, "'%s' is not valid. %s", tx_hash_element, ++ "Valid tx-hashes: [eth, vlan, ipv4, ipv6, ip, l3, tcp, udp, sctp, l4]"); + return FALSE; + } + +@@ -3963,24 +3970,24 @@ static gboolean + _set_fcn_team_runner_tx_hash (ARGS_SET_FCN) + { + char **strv = NULL; +- guint i = 0; ++ char *const*iter; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + strv = _nm_utils_strv_cleanup (g_strsplit_set (value, " \t,", 0), + TRUE, TRUE, TRUE); +- if (!verify_string_list (strv, property_info->property_name, +- _is_valid_team_runner_tx_hash_element, +- error)) { +- g_strfreev (strv); +- return FALSE; ++ for (iter = strv; strv && *iter; iter++) { ++ if (!_is_valid_team_runner_tx_hash_element (*iter, error)) { ++ g_strfreev (strv); ++ return FALSE; ++ } + } + + while (nm_setting_team_get_num_runner_tx_hash (NM_SETTING_TEAM (setting))) + nm_setting_team_remove_runner_tx_hash (NM_SETTING_TEAM (setting), 0); + +- while (strv && strv[i]) +- nm_setting_team_add_runner_tx_hash (NM_SETTING_TEAM (setting), strv[i++]); ++ for (iter = strv; strv && *iter; iter++) ++ nm_setting_team_add_runner_tx_hash (NM_SETTING_TEAM (setting), *iter); + g_strfreev (strv); + + return TRUE; +-- +2.14.3 + diff --git a/SOURCES/0026-apply-route-penality-only-with-defroute-rh1459604.patch b/SOURCES/0026-apply-route-penality-only-with-defroute-rh1459604.patch deleted file mode 100644 index fcda129..0000000 --- a/SOURCES/0026-apply-route-penality-only-with-defroute-rh1459604.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 5b1e11d056015e70431f4add8a5efd203d14775f Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Thu, 8 Jun 2017 00:26:00 +0200 -Subject: [PATCH] device: apply route metric penality only when the default - route exists - -It's useless (and in some cases also harmful) to commit the -configuration to update the default route metric when the device has -no default route. Also, don't commit configuration for externally -activated devices. - -https://bugzilla.redhat.com/show_bug.cgi?id=1459604 -(cherry picked from commit aa099906f93264bda3ae34fca4dfbdde5455b2bb) -(cherry picked from commit 6a4774b1a8fdc346e0a2d2a3d2ec43054190fdc5) ---- - src/devices/nm-device.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 6c93a95..e60995d 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -1827,10 +1827,13 @@ update_connectivity_state (NMDevice *self, NMConnectivityState state) - priv->connectivity_state = state; - _notify (self, PROP_CONNECTIVITY); - -- if (nm_device_get_state (self) == NM_DEVICE_STATE_ACTIVATED) { -- if (!ip4_config_merge_and_apply (self, NULL, TRUE)) -+ if ( priv->state == NM_DEVICE_STATE_ACTIVATED -+ && !nm_device_sys_iface_state_is_external (self)) { -+ if ( priv->default_route.v4_has -+ && !ip4_config_merge_and_apply (self, NULL, TRUE)) - _LOGW (LOGD_IP4, "Failed to update IPv4 default route metric"); -- if (!ip6_config_merge_and_apply (self, TRUE)) -+ if ( priv->default_route.v6_has -+ && !ip6_config_merge_and_apply (self, TRUE)) - _LOGW (LOGD_IP6, "Failed to update IPv6 default route metric"); - } - } --- -2.9.3 - diff --git a/SOURCES/0026-dhcp-fix-lease-renewal-rh1503587.patch b/SOURCES/0026-dhcp-fix-lease-renewal-rh1503587.patch new file mode 100644 index 0000000..bcfeb71 --- /dev/null +++ b/SOURCES/0026-dhcp-fix-lease-renewal-rh1503587.patch @@ -0,0 +1,323 @@ +From 2d98ce90188fdf4d21c2b597ba848d249a2d4e09 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Mon, 15 Jan 2018 12:49:33 +0100 +Subject: [PATCH 1/3] device: always consider both ip families when deciding to + fail + +Example: when dhcpv4 lease renewal fails, if ipv4.may-fail was "yes", +check also if we have a successful ipv6 conf: if not fail. +Previously we just ignored the other ip family status. + +(cherry picked from commit da0fee4d9f16d0de6323ea709e459b79b5158dad) +--- + src/devices/nm-device.c | 53 ++++++++++++++++++++++++++++--------------------- + 1 file changed, 30 insertions(+), 23 deletions(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index f8651e2e1..345034185 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -3774,21 +3774,24 @@ get_ip_config_may_fail (NMDevice *self, int addr_family) + /* + * check_ip_state + * +- * Transition the device from IP_CONFIG to the next state according to the +- * outcome of IPv4 and IPv6 configuration. @may_fail indicates that we are +- * called just after the initial configuration and thus IPv4/IPv6 are allowed to +- * fail if the ipvx.may-fail properties say so, because the IP methods couldn't +- * even be started. ++ * When @full_state_update is TRUE, transition the device from IP_CONFIG to the ++ * next state according to the outcome of IPv4 and IPv6 configuration. @may_fail ++ * indicates that we are called just after the initial configuration and thus ++ * IPv4/IPv6 are allowed to fail if the ipvx.may-fail properties say so, because ++ * the IP methods couldn't even be started. ++ * If @full_state_update is FALSE, just check if the connection should be failed ++ * due to the state of both ip families and the ipvx.may-fail settings. + */ + static void +-check_ip_state (NMDevice *self, gboolean may_fail) ++check_ip_state (NMDevice *self, gboolean may_fail, gboolean full_state_update) + { + NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); + gboolean ip4_disabled = FALSE, ip6_ignore = FALSE; + NMSettingIPConfig *s_ip4, *s_ip6; + NMDeviceState state; + +- if (nm_device_get_state (self) != NM_DEVICE_STATE_IP_CONFIG) ++ if ( full_state_update ++ && nm_device_get_state (self) != NM_DEVICE_STATE_IP_CONFIG) + return; + + /* Don't progress into IP_CHECK or SECONDARIES if we're waiting for the +@@ -3835,9 +3838,12 @@ check_ip_state (NMDevice *self, gboolean may_fail) + state = NM_DEVICE_STATE_FAILED; + } + +- nm_device_state_changed (self, +- state, +- NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE); ++ if ( full_state_update ++ || state == NM_DEVICE_STATE_FAILED) { ++ nm_device_state_changed (self, ++ state, ++ NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE); ++ } + return; + } + +@@ -3850,7 +3856,8 @@ check_ip_state (NMDevice *self, gboolean may_fail) + /* If at least a method has completed, proceed with activation */ + if ( (priv->ip4_state == IP_DONE && !ip4_disabled) + || (priv->ip6_state == IP_DONE && !ip6_ignore)) { +- nm_device_state_changed (self, NM_DEVICE_STATE_IP_CHECK, NM_DEVICE_STATE_REASON_NONE); ++ if (full_state_update) ++ nm_device_state_changed (self, NM_DEVICE_STATE_IP_CHECK, NM_DEVICE_STATE_REASON_NONE); + return; + } + } +@@ -3892,7 +3899,7 @@ nm_device_slave_notify_enslave (NMDevice *self, gboolean success) + + if (activating) { + if (success) +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + else + nm_device_queue_state (self, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_UNKNOWN); + } else +@@ -5268,7 +5275,7 @@ nm_device_ip_method_failed (NMDevice *self, + _set_ip_state (self, addr_family, IP_FAIL); + + if (get_ip_config_may_fail (self, addr_family)) +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, (nm_device_get_state (self) == NM_DEVICE_STATE_IP_CONFIG)); + else + nm_device_state_changed (self, NM_DEVICE_STATE_FAILED, reason); + } +@@ -7997,7 +8004,7 @@ nm_device_activate_stage3_ip4_start (NMDevice *self) + + if (nm_device_sys_iface_state_is_external (self)) { + _set_ip_state (self, AF_INET, IP_DONE); +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + return TRUE; + } + +@@ -8010,7 +8017,7 @@ nm_device_activate_stage3_ip4_start (NMDevice *self) + g_object_unref (ip4_config); + } else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) { + _set_ip_state (self, AF_INET, IP_DONE); +- check_ip_state (self, FALSE); ++ 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; +@@ -8044,7 +8051,7 @@ nm_device_activate_stage3_ip6_start (NMDevice *self) + + if (nm_device_sys_iface_state_is_external (self)) { + _set_ip_state (self, AF_INET6, IP_DONE); +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + return TRUE; + } + +@@ -8061,7 +8068,7 @@ nm_device_activate_stage3_ip6_start (NMDevice *self) + nm_device_activate_schedule_ip6_config_result (self); + } else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) { + _set_ip_state (self, AF_INET6, IP_DONE); +- check_ip_state (self, FALSE); ++ 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; +@@ -8111,7 +8118,7 @@ activate_stage3_ip_config_start (NMDevice *self) + /* Proxy */ + nm_device_set_proxy_config (self, NULL); + +- check_ip_state (self, TRUE); ++ check_ip_state (self, TRUE, TRUE); + } + + static void +@@ -8250,7 +8257,7 @@ activate_stage4_ip4_config_timeout (NMDevice *self) + + _set_ip_state (self, AF_INET, IP_FAIL); + +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + } + + /* +@@ -8306,7 +8313,7 @@ activate_stage4_ip6_config_timeout (NMDevice *self) + + _set_ip_state (self, AF_INET6, IP_FAIL); + +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + } + + /* +@@ -8554,7 +8561,7 @@ activate_stage5_ip4_config_result (NMDevice *self) + + /* Enter the IP_CHECK state if this is the first method to complete */ + _set_ip_state (self, AF_INET, IP_DONE); +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + } + + void +@@ -8709,7 +8716,7 @@ activate_stage5_ip6_config_commit (NMDevice *self) + _LOGD (LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: awaiting termination"); + } else { + _set_ip_state (self, AF_INET6, IP_DONE); +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + } + } + } else { +@@ -11195,7 +11202,7 @@ queued_ip6_config_change (gpointer user_data) + _LOGD (LOGD_DEVICE | LOGD_IP6, "IPv6 DAD terminated"); + g_clear_object (&priv->dad6_ip6_config); + _set_ip_state (self, AF_INET6, IP_DONE); +- check_ip_state (self, FALSE); ++ check_ip_state (self, FALSE, TRUE); + if (priv->rt6_temporary_not_available) + nm_device_activate_schedule_ip6_config_result (self); + } +-- +2.14.3 + + +From 56353bfb82e6d744b64f117f346b25b18526bf2d Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Mon, 15 Jan 2018 12:17:54 +0100 +Subject: [PATCH 2/3] device: never stop trying renewing the lease + +Always reschedule a lease renewal attempt: just clear the scheduled +renewal if the connection is really deactivated. + +(cherry picked from commit 1a20ff86d585b826d1769d0aa0adeca3aa1a183a) +--- + src/devices/nm-device.c | 36 ++++++++++++++++++++++++++++++++---- + 1 file changed, 32 insertions(+), 4 deletions(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index 345034185..f6d3f4c04 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -5900,15 +5900,23 @@ dhcp4_fail (NMDevice *self, gboolean timeout) + && (timeout || (priv->ip4_state == IP_CONF)) + && !priv->dhcp4.was_active) + nm_device_activate_schedule_ip4_config_timeout (self); +- else if (priv->ip4_state == IP_DONE || priv->dhcp4.was_active) { ++ else if ( priv->dhcp4.num_tries_left < DHCP_NUM_TRIES_MAX ++ || priv->ip4_state == IP_DONE ++ || priv->dhcp4.was_active) { + /* Don't fail immediately when the lease expires but try to + * restart DHCP for a predefined number of times. + */ + if (priv->dhcp4.num_tries_left) { + priv->dhcp4.num_tries_left--; + dhcp_schedule_restart (self, AF_INET, "lease expired"); +- } else ++ } else { + nm_device_ip_method_failed (self, AF_INET, NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED); ++ /* We failed the ipv4 method but schedule again the retries if the ipv6 method is ++ * configured, keeping the connection up. ++ */ ++ if (nm_device_get_state (self) != NM_DEVICE_STATE_FAILED) ++ dhcp_schedule_restart (self, AF_INET, "renewal failed"); ++ } + } else + g_warn_if_reached (); + } +@@ -5950,6 +5958,12 @@ dhcp4_state_changed (NMDhcpClient *client, + break; + } + ++ /* After some failures, we have been able to renew the lease: ++ * update the ip state ++ */ ++ if (priv->ip4_state == IP_FAIL) ++ _set_ip_state (self, AF_INET, IP_CONF); ++ + g_free (priv->dhcp4.pac_url); + priv->dhcp4.pac_url = g_strdup (g_hash_table_lookup (options, "wpad")); + nm_device_set_proxy_config (self, priv->dhcp4.pac_url); +@@ -6640,15 +6654,23 @@ dhcp6_fail (NMDevice *self, gboolean timeout) + && (timeout || (priv->ip6_state == IP_CONF)) + && !priv->dhcp6.was_active) + nm_device_activate_schedule_ip6_config_timeout (self); +- else if (priv->ip6_state == IP_DONE || priv->dhcp6.was_active) { ++ else if ( priv->dhcp6.num_tries_left < DHCP_NUM_TRIES_MAX ++ || priv->ip6_state == IP_DONE ++ || priv->dhcp6.was_active) { + /* Don't fail immediately when the lease expires but try to + * restart DHCP for a predefined number of times. + */ + if (priv->dhcp6.num_tries_left) { + priv->dhcp6.num_tries_left--; + dhcp_schedule_restart (self, AF_INET6, "lease expired"); +- } else ++ } else { + nm_device_ip_method_failed (self, AF_INET6, NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED); ++ /* We failed the ipv6 method but schedule again the retries if the ipv4 method is ++ * configured, keeping the connection up. ++ */ ++ if (nm_device_get_state (self) != NM_DEVICE_STATE_FAILED) ++ dhcp_schedule_restart (self, AF_INET6, "renewal failed"); ++ } + } else + g_warn_if_reached (); + } else { +@@ -6715,6 +6737,12 @@ dhcp6_state_changed (NMDhcpClient *client, + } + } + ++ /* After long time we have been able to renew the lease: ++ * update the ip state ++ */ ++ if (priv->ip6_state == IP_FAIL) ++ _set_ip_state (self, AF_INET6, IP_CONF); ++ + priv->dhcp6.num_tries_left = DHCP_NUM_TRIES_MAX; + + if (priv->ip6_state == IP_CONF) { +-- +2.14.3 + + +From b6d2ad3312eea21effbd8d6d5fe32056ccf89cb8 Mon Sep 17 00:00:00 2001 +From: Francesco Giudici +Date: Thu, 8 Feb 2018 18:28:10 +0100 +Subject: [PATCH 3/3] device: enable DHCPv6 retries on lease renewal failure + +https://bugzilla.gnome.org/show_bug.cgi?id=792745 +(cherry picked from commit 1289450146e2b212cabca500cb8009f910651661) +--- + src/devices/nm-device.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index f6d3f4c04..eb91dc257 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -6633,13 +6633,15 @@ static void + dhcp6_fail (NMDevice *self, gboolean timeout) + { + NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); ++ gboolean is_dhcp_managed; + + _LOGD (LOGD_DHCP6, "DHCPv6 failed: timeout %d, num tries left %u", + timeout, priv->dhcp6.num_tries_left); + ++ is_dhcp_managed = (priv->dhcp6.mode == NM_NDISC_DHCP_LEVEL_MANAGED); + dhcp6_cleanup (self, CLEANUP_TYPE_DECONFIGURE, FALSE); + +- if (priv->dhcp6.mode == NM_NDISC_DHCP_LEVEL_MANAGED) { ++ if (is_dhcp_managed || priv->dhcp6.num_tries_left < DHCP_NUM_TRIES_MAX) { + /* Don't fail if there are static addresses configured on + * the device, instead retry after some time. + */ +-- +2.14.3 + diff --git a/SOURCES/0027-cli-fix-interface-overview-rh1460219.patch b/SOURCES/0027-cli-fix-interface-overview-rh1460219.patch deleted file mode 100644 index bfa80a5..0000000 --- a/SOURCES/0027-cli-fix-interface-overview-rh1460219.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 8850e02a3d3b6442c7b0f5e658892e167a74f81d Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 15:18:20 +0200 -Subject: [PATCH 1/2] cli: fix output of iface in overview output - -Fixes: f14845cc200e21ed3aafadc2f9456cb0e2791f56 - -https://bugzilla.redhat.com/show_bug.cgi?id=1460219 -(cherry picked from commit 126b0874f19fa3647c0343d73dfdb48d6154bc08) -(cherry picked from commit be4e1000e8c88753e9ca0fee38c15712e5c1dd16) ---- - clients/cli/general.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/clients/cli/general.c b/clients/cli/general.c -index 12e76ef..4406c84 100644 ---- a/clients/cli/general.c -+++ b/clients/cli/general.c -@@ -1139,7 +1139,7 @@ device_overview (NmCli *nmc, NMDevice *device) - if ( nm_device_get_ip_iface (device) - && g_strcmp0 (nm_device_get_ip_iface (device), nm_device_get_iface (device)) - && g_strcmp0 (nm_device_get_ip_iface (device), "")) -- g_string_append_printf (outbuf, "%s %s,", _("iface"), nm_device_get_ip_iface (device)); -+ g_string_append_printf (outbuf, "%s %s, ", _("iface"), nm_device_get_ip_iface (device)); - - if (nm_device_get_physical_port_id (device)) - g_string_append_printf (outbuf, "%s %s, ", _("port"), nm_device_get_physical_port_id (device)); --- -2.9.3 - -From d37fefb8b9ee7c6beacf8ea49acbcad83453553d Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 15:23:44 +0200 -Subject: [PATCH 2/2] cli: minor refactoring of if-condition in device_overview - -Note that nm_device_get_ip_iface() never returns an emptry string "". - -(cherry picked from commit ee5fdcbfb50ec19b82715440e1c45f3c8e6ee5ea) -(cherry picked from commit c9c0a138294819d1c987d420918fa10d18e9a353) ---- - clients/cli/general.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/clients/cli/general.c b/clients/cli/general.c -index 4406c84..68fab6e 100644 ---- a/clients/cli/general.c -+++ b/clients/cli/general.c -@@ -1136,9 +1136,9 @@ device_overview (NmCli *nmc, NMDevice *device) - else - g_string_append_printf (outbuf, "%s, ", _("hw")); - -- if ( nm_device_get_ip_iface (device) -- && g_strcmp0 (nm_device_get_ip_iface (device), nm_device_get_iface (device)) -- && g_strcmp0 (nm_device_get_ip_iface (device), "")) -+ if (!NM_IN_STRSET (nm_device_get_ip_iface (device), -+ NULL, -+ nm_device_get_iface (device))) - g_string_append_printf (outbuf, "%s %s, ", _("iface"), nm_device_get_ip_iface (device)); - - if (nm_device_get_physical_port_id (device)) --- -2.9.3 - diff --git a/SOURCES/0028-ppp-unexport-ppp-manager-on-dispose.patch b/SOURCES/0028-ppp-unexport-ppp-manager-on-dispose.patch deleted file mode 100644 index 36f48eb..0000000 --- a/SOURCES/0028-ppp-unexport-ppp-manager-on-dispose.patch +++ /dev/null @@ -1,526 +0,0 @@ -From 6f9227609de574d1e69154d30025429a78aea4a9 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 16:09:18 +0200 -Subject: [PATCH 1/8] ppp: cast int argument for variadic - g_signal_emit(NM_PPP_MANAGER_STATE_CHANGE) call - -(cherry picked from commit 7b5251b35c23a625959aac9a1ff617a955b3daa3) -(cherry picked from commit 2aa4239cba745c67c6b4fa165c5c366d51c961a9) ---- - src/ppp/nm-ppp-manager.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index c7836a8..37d7a46 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -365,7 +365,7 @@ impl_ppp_manager_set_state (NMPPPManager *manager, - GDBusMethodInvocation *context, - guint32 state) - { -- g_signal_emit (manager, signals[STATE_CHANGED], 0, state); -+ g_signal_emit (manager, signals[STATE_CHANGED], 0, (guint) state); - - g_dbus_method_invocation_return_value (context, NULL); - } -@@ -692,7 +692,7 @@ ppp_watch_cb (GPid pid, gint status, gpointer user_data) - _LOGD ("pppd pid %d cleaned up", priv->pid); - priv->pid = 0; - priv->ppp_watch_id = 0; -- g_signal_emit (manager, signals[STATE_CHANGED], 0, NM_PPP_STATUS_DEAD); -+ g_signal_emit (manager, signals[STATE_CHANGED], 0, (guint) NM_PPP_STATUS_DEAD); - } - - static gboolean -@@ -704,7 +704,7 @@ pppd_timed_out (gpointer data) - _ppp_cleanup (manager); - _ppp_kill (manager); - -- g_signal_emit (manager, signals[STATE_CHANGED], 0, NM_PPP_STATUS_DEAD); -+ g_signal_emit (manager, signals[STATE_CHANGED], 0, (guint) NM_PPP_STATUS_DEAD); - - return FALSE; - } --- -2.9.3 - -From 7d485d2b0eec62a4b8345e261c958b9e15423220 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Wed, 7 Jun 2017 16:28:18 +0200 -Subject: [PATCH 2/8] ppp: unexport NMPPPManager instance on dispose() - -Let's explicitly unexports on dispose(). Probably that already -happened, because NMExportedObject asserts that it is unexported -during !quitting. - -During quitting, we probably don't tear down the manager. - -Anyway, we should always unexport. - -(cherry picked from commit f07dca941dc327e11c4252688020d5fd0b9b3567) -(cherry picked from commit 5e656b5872e6399d6536e3fb043ca9c63e298774) ---- - src/ppp/nm-ppp-manager.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index 37d7a46..fd0b991 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -1234,8 +1234,12 @@ static void - dispose (GObject *object) - { - NMPPPManager *self = (NMPPPManager *) object; -+ NMExportedObject *exported = NM_EXPORTED_OBJECT (self); - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self); - -+ if (nm_exported_object_is_exported (exported)) -+ nm_exported_object_unexport (exported); -+ - _ppp_cleanup (self); - _ppp_kill (self); - --- -2.9.3 - -From ca9bd14f512a060df129da9d490591886ce22ef7 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 13:57:47 +0200 -Subject: [PATCH 3/8] ppp: inline and drop trivial function - remove_timeout_handler() - -(cherry picked from commit 0f16649ba27942e12c550449cc1669355118890f) -(cherry picked from commit 620adbcc7b2eb630299b9c0595b48e4823ccecde) ---- - src/ppp/nm-ppp-manager.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index fd0b991..efaf73a 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -179,14 +179,6 @@ monitor_stats (NMPPPManager *manager) - /*****************************************************************************/ - - static void --remove_timeout_handler (NMPPPManager *manager) --{ -- NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager); -- -- nm_clear_g_source (&priv->ppp_timeout_handler); --} -- --static void - cancel_get_secrets (NMPPPManager *self) - { - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self); -@@ -415,7 +407,7 @@ impl_ppp_manager_set_ip4_config (NMPPPManager *manager, - - _LOGI ("(IPv4 Config Get) reply received."); - -- remove_timeout_handler (manager); -+ nm_clear_g_source (&priv->ppp_timeout_handler); - - config = nm_ip4_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, priv->ip_iface)); - -@@ -511,7 +503,7 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager, - - _LOGI ("(IPv6 Config Get) reply received."); - -- remove_timeout_handler (manager); -+ nm_clear_g_source (&priv->ppp_timeout_handler); - - config = nm_ip6_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, priv->ip_iface)); - --- -2.9.3 - -From 848af80037e21e9cc6bf9459f39f10ad314217eb Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 14:00:14 +0200 -Subject: [PATCH 4/8] ppp/trivial: fix whitespace - -(cherry picked from commit 5c5fbe0a9f90c53215c70cc7a76ea011560172b8) -(cherry picked from commit 105ef99cbf7f503f05826430df0f8acf1d1f3af9) ---- - src/ppp/nm-ppp-manager.c | 76 ++++++++++++++++++++++++------------------------ - 1 file changed, 38 insertions(+), 38 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index efaf73a..558082f 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -595,64 +595,64 @@ ppp_exit_code (guint pppd_exit_status, GPid pid) - const char *msg; - - switch (pppd_exit_status) { -- case 1: -- msg = "Fatal pppd error"; -+ case 1: -+ msg = "Fatal pppd error"; - break; -- case 2: -- msg = "pppd options error"; -+ case 2: -+ msg = "pppd options error"; - break; -- case 3: -- msg = "No root priv error"; -+ case 3: -+ msg = "No root priv error"; - break; -- case 4: -- msg = "No ppp module error"; -+ case 4: -+ msg = "No ppp module error"; - break; -- case 5: -- msg = "pppd received a signal"; -+ case 5: -+ msg = "pppd received a signal"; - break; -- case 6: -- msg = "Serial port lock failed"; -+ case 6: -+ msg = "Serial port lock failed"; - break; -- case 7: -- msg = "Serial port open failed"; -+ case 7: -+ msg = "Serial port open failed"; - break; -- case 8: -- msg = "Connect script failed"; -+ case 8: -+ msg = "Connect script failed"; - break; -- case 9: -- msg = "Pty program error"; -+ case 9: -+ msg = "Pty program error"; - break; -- case 10: -- msg = "PPP negotiation failed"; -+ case 10: -+ msg = "PPP negotiation failed"; - break; -- case 11: -- msg = "Peer didn't authenticatie itself"; -+ case 11: -+ msg = "Peer didn't authenticatie itself"; - break; -- case 12: -- msg = "Link idle: Idle Seconds reached."; -+ case 12: -+ msg = "Link idle: Idle Seconds reached."; - break; -- case 13: -- msg = "Connect time limit reached."; -+ case 13: -+ msg = "Connect time limit reached."; - break; -- case 14: -+ case 14: - msg = "Callback negotiated, call should come back."; - break; -- case 15: -- msg = "Lack of LCP echo responses"; -+ case 15: -+ msg = "Lack of LCP echo responses"; - break; -- case 16: -- msg = "A modem hung up the phone"; -+ case 16: -+ msg = "A modem hung up the phone"; - break; -- case 17: -- msg = "Loopback detected"; -+ case 17: -+ msg = "Loopback detected"; - break; -- case 18: -- msg = "The init script failed"; -+ case 18: -+ msg = "The init script failed"; - break; -- case 19: -+ case 19: - msg = "Authentication error.\n" -- "We failed to authenticate ourselves to the peer.\n" -- "Maybe bad account or password?"; -+ "We failed to authenticate ourselves to the peer.\n" -+ "Maybe bad account or password?"; - break; - default: - msg = "Unknown error"; --- -2.9.3 - -From e2f6a3d1900949971adc1d44eb7c78465c11fb17 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 14:12:58 +0200 -Subject: [PATCH 5/8] ppp: refactor ppp_exit_code() to split out error to - string conversion - -ppp_exit_code() does too much or too little. Either it should log -about all reasons why pppd exited, including signals, or it should -just do the status to string conversion. Split it. - -(cherry picked from commit 3f64910b5249a8535deffddd0fd574c25b28dcea) -(cherry picked from commit ccda61b6fc0eb90a32ea2a4bc360c82406a26331) ---- - src/ppp/nm-ppp-manager.c | 89 ++++++++++++++---------------------------------- - 1 file changed, 26 insertions(+), 63 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index 558082f..d9044a4 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -589,74 +589,37 @@ nm_cmd_line_add_int (NMCmdLine *cmd, int i) - - /*****************************************************************************/ - -+NM_UTILS_LOOKUP_STR_DEFINE_STATIC (pppd_exit_code_to_str, int, -+ NM_UTILS_LOOKUP_DEFAULT ("Unknown error"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 1, "Fatal pppd error"); -+ NM_UTILS_LOOKUP_STR_ITEM ( 2, "pppd options error"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 3, "No root priv error"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 4, "No ppp module error"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 5, "pppd received a signal"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 6, "Serial port lock failed"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 7, "Serial port open failed"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 8, "Connect script failed"), -+ NM_UTILS_LOOKUP_STR_ITEM ( 9, "Pty program error"), -+ NM_UTILS_LOOKUP_STR_ITEM (10, "PPP negotiation failed"), -+ NM_UTILS_LOOKUP_STR_ITEM (11, "Peer didn't authenticatie itself"), -+ NM_UTILS_LOOKUP_STR_ITEM (12, "Link idle: Idle Seconds reached."), -+ NM_UTILS_LOOKUP_STR_ITEM (13, "Connect time limit reached."), -+ NM_UTILS_LOOKUP_STR_ITEM (14, "Callback negotiated, call should come back."), -+ NM_UTILS_LOOKUP_STR_ITEM (15, "Lack of LCP echo responses"), -+ NM_UTILS_LOOKUP_STR_ITEM (16, "A modem hung up the phone"), -+ NM_UTILS_LOOKUP_STR_ITEM (17, "Loopback detected"), -+ NM_UTILS_LOOKUP_STR_ITEM (18, "The init script failed"), -+ NM_UTILS_LOOKUP_STR_ITEM (19, "Authentication error.\n" -+ "We failed to authenticate ourselves to the peer.\n" -+ "Maybe bad account or password?"), -+); -+ - static void - ppp_exit_code (guint pppd_exit_status, GPid pid) - { - const char *msg; - -- switch (pppd_exit_status) { -- case 1: -- msg = "Fatal pppd error"; -- break; -- case 2: -- msg = "pppd options error"; -- break; -- case 3: -- msg = "No root priv error"; -- break; -- case 4: -- msg = "No ppp module error"; -- break; -- case 5: -- msg = "pppd received a signal"; -- break; -- case 6: -- msg = "Serial port lock failed"; -- break; -- case 7: -- msg = "Serial port open failed"; -- break; -- case 8: -- msg = "Connect script failed"; -- break; -- case 9: -- msg = "Pty program error"; -- break; -- case 10: -- msg = "PPP negotiation failed"; -- break; -- case 11: -- msg = "Peer didn't authenticatie itself"; -- break; -- case 12: -- msg = "Link idle: Idle Seconds reached."; -- break; -- case 13: -- msg = "Connect time limit reached."; -- break; -- case 14: -- msg = "Callback negotiated, call should come back."; -- break; -- case 15: -- msg = "Lack of LCP echo responses"; -- break; -- case 16: -- msg = "A modem hung up the phone"; -- break; -- case 17: -- msg = "Loopback detected"; -- break; -- case 18: -- msg = "The init script failed"; -- break; -- case 19: -- msg = "Authentication error.\n" -- "We failed to authenticate ourselves to the peer.\n" -- "Maybe bad account or password?"; -- break; -- default: -- msg = "Unknown error"; -- } -+ msg = pppd_exit_code_to_str (pppd_exit_status); - - _LOGW ("pppd pid %d exited with error: %s", pid, msg); - } --- -2.9.3 - -From b2b6bf1cecc61d82590041aadee52cb9e95064b2 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 14:13:36 +0200 -Subject: [PATCH 6/8] ppp: don't log newlines - -(cherry picked from commit a814b96ebf02fa88f1a431d0a7459723a3af670d) -(cherry picked from commit 38b5d356de300f717df9c262c4fbf7ea0053aee6) ---- - src/ppp/nm-ppp-manager.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index d9044a4..93660ef 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -609,8 +609,8 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (pppd_exit_code_to_str, int, - NM_UTILS_LOOKUP_STR_ITEM (16, "A modem hung up the phone"), - NM_UTILS_LOOKUP_STR_ITEM (17, "Loopback detected"), - NM_UTILS_LOOKUP_STR_ITEM (18, "The init script failed"), -- NM_UTILS_LOOKUP_STR_ITEM (19, "Authentication error.\n" -- "We failed to authenticate ourselves to the peer.\n" -+ NM_UTILS_LOOKUP_STR_ITEM (19, "Authentication error. " -+ "We failed to authenticate ourselves to the peer. " - "Maybe bad account or password?"), - ); - --- -2.9.3 - -From 13d2ba85f0ea1835cd5b18fe2844d49d0a1f5592 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 14:19:05 +0200 -Subject: [PATCH 7/8] ppp: cleanup logging pppd exit reason in ppp_watch_cb - -- don't use assert but be more graceful with g_return_if_fail(). -- in case of failure, don't log a debug message after the warning. - One message is sufficient, drop "pppd pid %d cleaned up". -- print GPid type as long long. -- increase log level to warning. pppd dying unexpectedly warrants a - warning. - -(cherry picked from commit 250e7239511f4c8de6831e3c16d8d5f6fac383dc) -(cherry picked from commit b87327a5fea4e80a33849b8ff9735c4b61b9434d) ---- - src/ppp/nm-ppp-manager.c | 36 ++++++++++++++++-------------------- - 1 file changed, 16 insertions(+), 20 deletions(-) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index 93660ef..575bf11 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -615,36 +615,32 @@ NM_UTILS_LOOKUP_STR_DEFINE_STATIC (pppd_exit_code_to_str, int, - ); - - static void --ppp_exit_code (guint pppd_exit_status, GPid pid) --{ -- const char *msg; -- -- msg = pppd_exit_code_to_str (pppd_exit_status); -- -- _LOGW ("pppd pid %d exited with error: %s", pid, msg); --} -- --static void --ppp_watch_cb (GPid pid, gint status, gpointer user_data) -+ppp_watch_cb (GPid pid, int status, gpointer user_data) - { - NMPPPManager *manager = NM_PPP_MANAGER (user_data); - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (manager); -- guint err; -+ int err; -+ const long long lpid = (long long) pid; - -- g_assert (pid == priv->pid); -+ g_return_if_fail (pid == priv->pid); - - if (WIFEXITED (status)) { - err = WEXITSTATUS (status); -- if (err != 0) -- ppp_exit_code (err, priv->pid); -+ if (err) { -+ _LOGW ("pppd pid %lld exited with error %d: %s", -+ lpid, err, -+ pppd_exit_code_to_str (err)); -+ } else -+ _LOGD ("pppd pid %lld exited with success", lpid); - } else if (WIFSTOPPED (status)) { -- _LOGI ("pppd pid %d stopped unexpectedly with signal %d", priv->pid, WSTOPSIG (status)); -+ _LOGW ("pppd pid %lld stopped unexpectedly with signal %d", -+ lpid, WSTOPSIG (status)); - } else if (WIFSIGNALED (status)) { -- _LOGI ("pppd pid %d died with signal %d", priv->pid, WTERMSIG (status)); -+ _LOGW ("pppd pid %lld died with signal %d", -+ lpid, WTERMSIG (status)); - } else -- _LOGI ("pppd pid %d died from an unknown cause", priv->pid); -+ _LOGW ("pppd pid %lld died from an unknown cause", lpid); - -- _LOGD ("pppd pid %d cleaned up", priv->pid); - priv->pid = 0; - priv->ppp_watch_id = 0; - g_signal_emit (manager, signals[STATE_CHANGED], 0, (guint) NM_PPP_STATUS_DEAD); -@@ -971,7 +967,7 @@ _ppp_manager_start (NMPPPManager *manager, - goto out; - } - -- _LOGI ("pppd started with pid %d", priv->pid); -+ _LOGI ("pppd started with pid %lld", (long long) priv->pid); - - priv->ppp_watch_id = g_child_watch_add (priv->pid, (GChildWatchFunc) ppp_watch_cb, manager); - priv->ppp_timeout_handler = g_timeout_add_seconds (timeout_secs, pppd_timed_out, manager); --- -2.9.3 - -From baf5a6b24119671bb8a0edea2fc4830750c16305 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 9 Jun 2017 15:11:24 +0200 -Subject: [PATCH 8/8] ppp: fix cancelling timeout when pppd process exits - -Otherwise, we get pppd_timed_out() later, which will -emit a DEAD state change at unexpected times. - -(cherry picked from commit b9af32b056ae7c93b33644b8a24641a86bf66e2c) -(cherry picked from commit 1b954fe09b3b968aa883bba1027f47487ac4808e) ---- - src/ppp/nm-ppp-manager.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c -index 575bf11..6343df8 100644 ---- a/src/ppp/nm-ppp-manager.c -+++ b/src/ppp/nm-ppp-manager.c -@@ -643,6 +643,7 @@ ppp_watch_cb (GPid pid, int status, gpointer user_data) - - priv->pid = 0; - priv->ppp_watch_id = 0; -+ _ppp_cleanup (manager); - g_signal_emit (manager, signals[STATE_CHANGED], 0, (guint) NM_PPP_STATUS_DEAD); - } - --- -2.9.3 - diff --git a/SOURCES/0029-cli-wifi-spurious-output.patch b/SOURCES/0029-cli-wifi-spurious-output.patch deleted file mode 100644 index 69db5f5..0000000 --- a/SOURCES/0029-cli-wifi-spurious-output.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 7e13e49f15a43f54391380c76f7074bdaa300d03 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Sun, 11 Jun 2017 22:31:43 +0200 -Subject: [PATCH] cli: remove spurious device names from output - -When running one of: - - nmcli device wifi list ifname wlan0 - nmcli device wifi connect ... ifname wlan0 - -nmcli wrongly adds the device name to the output. - -Do the completion only when requested. - -Fixes: 8679793f6b711847d3209ab3cfbd95ab4a2e2488 -Fixes: 1a0dfd31c4af5f3e42b4fc8363a2065d8c5a325b -(cherry picked from commit d2b4332b36686dd5d7382d996743f0ffa1a0fdda) -(cherry picked from commit 73e664e3b15e47b20dcdc92d4cde7f8492069f17) ---- - clients/cli/devices.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/clients/cli/devices.c b/clients/cli/devices.c -index 387edef..50983de 100644 ---- a/clients/cli/devices.c -+++ b/clients/cli/devices.c -@@ -2653,7 +2653,8 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) - return NMC_RESULT_ERROR_USER_INPUT; - } - ifname = *argv; -- complete_device (devices, ifname, TRUE); -+ if (argc == 1 && nmc->complete) -+ complete_device (devices, ifname, TRUE); - } else if (strcmp (*argv, "bssid") == 0 || strcmp (*argv, "hwaddr") == 0) { - /* hwaddr is deprecated and will be removed later */ - argc--; -@@ -2900,7 +2901,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv) - goto finish; - } - ifname = *argv; -- complete_device (devices, ifname, TRUE); -+ if (argc == 1 && nmc->complete) -+ complete_device (devices, ifname, TRUE); - } else if (strcmp (*argv, "bssid") == 0) { - argc--; - argv++; --- -2.9.3 - diff --git a/SOURCES/0030-device-mtu-preserve-rh1460760.patch b/SOURCES/0030-device-mtu-preserve-rh1460760.patch deleted file mode 100644 index e09ba79..0000000 --- a/SOURCES/0030-device-mtu-preserve-rh1460760.patch +++ /dev/null @@ -1,135 +0,0 @@ -From a222f7e0554fe8057a6d9c6749acbd066798fa9d Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Tue, 13 Jun 2017 12:26:51 +0200 -Subject: [PATCH 1/1] device: don't set MTU of device unless explicitly - configured - -Since commit 2b51d3967 "device: merge branch 'th/device-mtu-bgo777251'", -we always set the MTU for certain device types during activation. Even -if the MTU is neither specified via the connection nor other means, like -DHCP. - -Revert that change. On activation, if nothing explicitly configures the -MTU, leave it unchanged. This is like what we do with ethernet's -cloned-mac-address, which has a default value "preserve". -So, as last resort the default value for MTU is now 0 (don't change), -instead of depending on the device type. - -Note that you also can override the default value in global -configuration via NetworkManager.conf. - -This behavior makes sense, because whenever NM actively resets the MTU, -it remembers the previous value and restores it when deactivating -the connection. That wasn't implemented before 2b51d3967, and the -MTU would depend on which connection was previously active. That -is no longer an issue as the MTU gets reset when deactivating. - -https://bugzilla.redhat.com/show_bug.cgi?id=1460760 -(cherry picked from commit 4ca3002b86948847711cd5b1937008baef3c30da) -(cherry picked from commit 588841f2e086774420a7ff4452d87e45ffae578a) ---- - man/NetworkManager.conf.xml | 2 +- - src/devices/nm-device-infiniband.c | 2 +- - src/devices/nm-device-ip-tunnel.c | 2 +- - src/devices/nm-device-private.h | 4 ---- - src/devices/nm-device-vlan.c | 2 +- - src/devices/nm-device.c | 2 +- - src/devices/wifi/nm-device-wifi.c | 2 +- - 7 files changed, 6 insertions(+), 10 deletions(-) - -diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml -index 5e76c0ace..71c62cc15 100644 ---- a/man/NetworkManager.conf.xml -+++ b/man/NetworkManager.conf.xml -@@ -655,7 +655,7 @@ ipv6.ip6-privacy=0 - - - ethernet.mtu -- 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 a default of 1500. -+ 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 not reconfigured during activation. - - - ethernet.wake-on-lan -diff --git a/src/devices/nm-device-infiniband.c b/src/devices/nm-device-infiniband.c -index f7875d099..7e0412703 100644 ---- a/src/devices/nm-device-infiniband.c -+++ b/src/devices/nm-device-infiniband.c -@@ -139,7 +139,7 @@ get_configured_mtu (NMDevice *device, gboolean *out_is_user_config) - } - } - *out_is_user_config = (mtu != 0); -- return mtu ?: NM_DEVICE_DEFAULT_MTU_INFINIBAND; -+ return mtu; - } - - static gboolean -diff --git a/src/devices/nm-device-ip-tunnel.c b/src/devices/nm-device-ip-tunnel.c -index 53b7cf4e5..2f505ef4c 100644 ---- a/src/devices/nm-device-ip-tunnel.c -+++ b/src/devices/nm-device-ip-tunnel.c -@@ -767,7 +767,7 @@ get_configured_mtu (NMDevice *self, gboolean *out_is_user_config) - } - } - *out_is_user_config = (mtu != 0); -- return mtu ?: NM_DEVICE_DEFAULT_MTU_WIRED; -+ return mtu; - } - - static NMDeviceCapabilities -diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h -index a4067f9c2..9eccafdc6 100644 ---- a/src/devices/nm-device-private.h -+++ b/src/devices/nm-device-private.h -@@ -116,10 +116,6 @@ gboolean nm_device_ipv6_sysctl_set (NMDevice *self, const char *property, const - - /*****************************************************************************/ - --#define NM_DEVICE_DEFAULT_MTU_WIRED ((guint32) 1500) --#define NM_DEVICE_DEFAULT_MTU_WIRELESS ((guint32) 1500) --#define NM_DEVICE_DEFAULT_MTU_INFINIBAND ((guint32) 0) -- - gint64 nm_device_get_configured_mtu_from_connection_default (NMDevice *self, - const char *property_name); - -diff --git a/src/devices/nm-device-vlan.c b/src/devices/nm-device-vlan.c -index 06db64465..a74da8f22 100644 ---- a/src/devices/nm-device-vlan.c -+++ b/src/devices/nm-device-vlan.c -@@ -586,7 +586,7 @@ get_configured_mtu (NMDevice *self, gboolean *out_is_user_config) - if (ifindex > 0) - mtu = nm_platform_link_get_mtu (nm_device_get_platform (NM_DEVICE (self)), ifindex); - -- return mtu ?: NM_DEVICE_DEFAULT_MTU_WIRED; -+ return mtu; - } - - /*****************************************************************************/ -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index e60995d57..e37b24bff 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -7150,7 +7150,7 @@ nm_device_get_configured_mtu_for_wired (NMDevice *self, gboolean *out_is_user_co - } - - *out_is_user_config = FALSE; -- return NM_DEVICE_DEFAULT_MTU_WIRED; -+ return 0; - } - - /*****************************************************************************/ -diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c -index 7359be96e..20692ed9e 100644 ---- a/src/devices/wifi/nm-device-wifi.c -+++ b/src/devices/wifi/nm-device-wifi.c -@@ -2742,7 +2742,7 @@ get_configured_mtu (NMDevice *device, gboolean *out_is_user_config) - } - } - *out_is_user_config = (mtu != 0); -- return mtu ?: NM_DEVICE_DEFAULT_MTU_WIRELESS; -+ return mtu; - } - - static gboolean --- -2.13.0 - diff --git a/SOURCES/0031-don-t-remove-ext-ipv4-addresses-rh1459813.patch b/SOURCES/0031-don-t-remove-ext-ipv4-addresses-rh1459813.patch deleted file mode 100644 index e145e89..0000000 --- a/SOURCES/0031-don-t-remove-ext-ipv4-addresses-rh1459813.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 59aa2a26b4a712131b38e155d3c1d70a74183636 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Tue, 13 Jun 2017 14:44:22 +0200 -Subject: [PATCH] core: sort addresses in captured IPv4 configuration - -When IPv4 addresses are synchronized to platform, the order of IPv4 -addresses matters because the first address is considered the primary -one. Thus, nm_ip4_config_capture() should put the primary address as -first, otherwise during synchronization addresses will be removed and -added back with a different primary/secondary role. - -https://bugzilla.redhat.com/show_bug.cgi?id=1459813 -(cherry picked from commit b6fa87a4c07c968614d123750be47a74de62f04d) -(cherry picked from commit 9819ffe7d42f08bb082ae2d9e125a7dd3bfe6420) ---- - src/nm-ip4-config.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c -index 20532e8..ae6af9c 100644 ---- a/src/nm-ip4-config.c -+++ b/src/nm-ip4-config.c -@@ -248,6 +248,16 @@ notify_addresses (NMIP4Config *self) - _notify (self, PROP_ADDRESSES); - } - -+static gint -+sort_captured_addresses (gconstpointer a, gconstpointer b) -+{ -+ const NMPlatformIP4Address *addr_a = a, *addr_b = b; -+ -+ /* Primary addresses first */ -+ return NM_FLAGS_HAS (addr_a->n_ifa_flags, IFA_F_SECONDARY) - -+ NM_FLAGS_HAS (addr_b->n_ifa_flags, IFA_F_SECONDARY); -+} -+ - NMIP4Config * - nm_ip4_config_capture (NMPlatform *platform, int ifindex, gboolean capture_resolv_conf) - { -@@ -269,6 +279,8 @@ nm_ip4_config_capture (NMPlatform *platform, int ifindex, gboolean capture_resol - g_array_unref (priv->routes); - - priv->addresses = nm_platform_ip4_address_get_all (platform, ifindex); -+ g_array_sort (priv->addresses, sort_captured_addresses); -+ - priv->routes = nm_platform_ip4_route_get_all (platform, ifindex, NM_PLATFORM_GET_ROUTE_FLAGS_WITH_DEFAULT | NM_PLATFORM_GET_ROUTE_FLAGS_WITH_NON_DEFAULT); - - /* Extract gateway from default route */ --- -2.9.3 - diff --git a/SOURCES/0032-don-t-set-a-fake-permanent-hardware-address.patch b/SOURCES/0032-don-t-set-a-fake-permanent-hardware-address.patch deleted file mode 100644 index 3cd2ea2..0000000 --- a/SOURCES/0032-don-t-set-a-fake-permanent-hardware-address.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 081b84e78487ad96d19fbee71f0af071e1acdf33 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Tue, 25 Jul 2017 10:37:14 +0200 -Subject: [PATCH] device: don't set a fake permanent hardware address - -Software devices don't have a permanent hardware address and thus it -doesn't make sense to enforce the 'fake' (generated) permanent one -when cloned-mac-address=permanent. Also, setting the fake permanent -address on bond devices, prevents them from inheriting the first slave -hardware address, so let's just skip the setting of MAC when -cloned-mac-address=permanent and there is no real permanent address. - -https://bugzilla.redhat.com/show_bug.cgi?id=1472965 -(cherry picked from commit 2f4dfd0f2e8f85dd86f5abfbeaafd7cb04655525) -(cherry picked from commit c8d0a0fcf7b8368b9fbe19f4fb2327349dcc5eba) ---- - libnm-core/nm-setting-wired.c | 3 ++- - src/devices/nm-device.c | 13 +++++++++++-- - 2 files changed, 13 insertions(+), 3 deletions(-) - -diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c -index 9bf8255..3ac9cc4 100644 ---- a/libnm-core/nm-setting-wired.c -+++ b/libnm-core/nm-setting-wired.c -@@ -1150,7 +1150,8 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_wired_class) - * Beside explicitly specifing a MAC address, the special values "preserve", "permanent", - * "random" and "stable" are supported. - * "preserve" means not to touch the MAC address on activation. -- * "permanent" means to use the permanent hardware address of the device. -+ * "permanent" means to use the permanent hardware address if the device -+ * has one (otherwise this is treated as "preserve"). - * "random" creates a random MAC address on each connect. - * "stable" creates a hashed MAC address based on connection.stable-id and a - * machine dependent key. -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index e37b24b..c055747 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -13465,8 +13465,17 @@ _hw_addr_get_cloned (NMDevice *self, NMConnection *connection, gboolean is_wifi, - } - - if (nm_streq (addr, NM_CLONED_MAC_PERMANENT)) { -- addr = nm_device_get_permanent_hw_address (self); -- if (!addr) { -+ gboolean is_fake; -+ -+ addr = nm_device_get_permanent_hw_address_full (self, TRUE, &is_fake); -+ if (is_fake) { -+ /* Preserve the current address if the permanent address if fake */ -+ NM_SET_OUT (preserve, TRUE); -+ NM_SET_OUT (hwaddr, NULL); -+ NM_SET_OUT (hwaddr_type, HW_ADDR_TYPE_UNSET); -+ NM_SET_OUT (hwaddr_detail, g_steal_pointer (&addr_setting_free) ?: g_strdup (addr_setting)); -+ return TRUE; -+ } else if (!addr) { - g_set_error_literal (error, - NM_DEVICE_ERROR, - NM_DEVICE_ERROR_FAILED, --- -2.9.4 - diff --git a/SOURCES/0033-device-fix-delay-startup-complete-for-unrealized-dev.patch b/SOURCES/0033-device-fix-delay-startup-complete-for-unrealized-dev.patch deleted file mode 100644 index bcf6fb8..0000000 --- a/SOURCES/0033-device-fix-delay-startup-complete-for-unrealized-dev.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 9c1124ff867654d5cf9e32379c2b9dd5e4c66387 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 29 Sep 2017 17:08:55 +0200 -Subject: [PATCH 1/1] device: fix delay startup complete for unrealized devices - -Since commit 6845b9b80a9fcec9d2c9e7b56a37329f38089f2e ("device: delay -startup complete until device is initialized in platform", we also wait -for devices that are still initializing platform/UDEV. - -Obviously, that only applies to realized devices. - -Otherwise, an unrealized device is going to block startup complete. - -Fixes: 6845b9b80a9fcec9d2c9e7b56a37329f38089f2e -(cherry picked from commit 9ad8010fe0c42291580e4a801ed85947ae660d38) -(cherry picked from commit 0ba498b17dc582dcbd9b7102e03496f391d67812) ---- - src/devices/nm-device.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index c055747fd..088dd0004 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -12018,7 +12018,8 @@ nm_device_has_pending_action (NMDevice *self) - if (priv->pending_actions) - return TRUE; - -- if (nm_device_get_unmanaged_flags (self, NM_UNMANAGED_PLATFORM_INIT)) { -+ if ( nm_device_is_real (self) -+ && nm_device_get_unmanaged_flags (self, NM_UNMANAGED_PLATFORM_INIT)) { - /* as long as the platform link is not yet initialized, we have a pending - * action. */ - return TRUE; --- -2.13.6 - diff --git a/SOURCES/0034-device-fix-frozen-notify-signals-on-unrealize-error-.patch b/SOURCES/0034-device-fix-frozen-notify-signals-on-unrealize-error-.patch deleted file mode 100644 index 29938f3..0000000 --- a/SOURCES/0034-device-fix-frozen-notify-signals-on-unrealize-error-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From f43390128877d539d8abd49e7539a547567aff98 Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Wed, 4 Oct 2017 14:30:57 +0200 -Subject: [PATCH 34/34] device: fix frozen notify signals on unrealize error - path - -If unrealize() failed we returned without thawing notify signals. Fix -this by moving g_object_freeze_notify() after the -unrealization/deletion but before the properties are reset in -unrealize_notify(). - -Fixes: a93807c288743f499362f7edfe0674020762811c -(cherry picked from commit 24a7f88bc56b66745c1e6b9444df8a80125de059) -(cherry picked from commit 5bd8269315fc7d41c62e258689a05bf062c6f592) ---- - src/devices/nm-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 088dd0004..04e48e5b8 100644 ---- a/src/devices/nm-device.c -+++ b/src/devices/nm-device.c -@@ -3257,7 +3257,6 @@ nm_device_unrealize (NMDevice *self, gboolean remove_resources, GError **error) - g_return_val_if_fail (priv->iface != NULL, FALSE); - g_return_val_if_fail (priv->real, FALSE); - -- g_object_freeze_notify (G_OBJECT (self)); - - ifindex = nm_device_get_ifindex (self); - -@@ -3274,6 +3273,7 @@ nm_device_unrealize (NMDevice *self, gboolean remove_resources, GError **error) - } - } - -+ g_object_freeze_notify (G_OBJECT (self)); - NM_DEVICE_GET_CLASS (self)->unrealize_notify (self); - - _parent_set_ifindex (self, 0, FALSE); --- -2.13.6 - diff --git a/SOURCES/9999-fix-pregen-doc.patch b/SOURCES/9999-fix-pregen-doc.patch index b1508b5..cfd19cc 100644 --- a/SOURCES/9999-fix-pregen-doc.patch +++ b/SOURCES/9999-fix-pregen-doc.patch @@ -1,7 +1,7 @@ -From 7ead660da136cbfd56a63a960a0eaead64b3f819 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Fri, 19 Aug 2016 10:58:53 +0200 -Subject: [PATCH 1/1] patch documentation with the proper default values +From f3930619ad245fab5f7ba0e4d390daaf1970f27c Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Wed, 25 Oct 2017 18:16:59 +0200 +Subject: [PATCH] patch documentation with the proper default values We don't regenerate the documentation for RHEL builds, but the docs from the tarball are generated with a certain set @@ -9,13 +9,13 @@ of defaults. Patch the man pages with the proper values. --- - docs/api/html/NetworkManager.conf.html | 21 ++++++++++++++++----- - ...gdbus-org.freedesktop.NetworkManager.Device.html | 15 +++++++++++++++ - man/NetworkManager.conf.5 | 19 ++++++++++++++----- - 3 files changed, 45 insertions(+), 10 deletions(-) + docs/api/html/NetworkManager.conf.html | 10 +++++----- + docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html | 2 +- + man/NetworkManager.conf.5 | 8 ++++---- + 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html -index b43f5ac56..a57e46ebe 100644 +index ec32a39cf..5d7e7e8a0 100644 --- a/docs/api/html/NetworkManager.conf.html +++ b/docs/api/html/NetworkManager.conf.html @@ -183,7 +183,7 @@ plugins-=remove-me @@ -27,7 +27,7 @@ index b43f5ac56..a57e46ebe 100644 It the chosen plugin is not available, clients are looked for in this order: dhclient, dhcpcd, internal.

-@@ -338,7 +338,7 @@ no-auto-default=* +@@ -341,7 +341,7 @@ no-auto-default=*

Set the resolv.conf management mode. The default value depends on NetworkManager build options, and this version of NetworkManager was build with a default of @@ -36,25 +36,7 @@ index b43f5ac56..a57e46ebe 100644 Regardless of this setting, NetworkManager will always write resolv.conf to its runtime state directory /var/run/NetworkManager/resolv.conf.

-@@ -396,6 +396,17 @@ no-auto-default=* - times. -

- -+ -+

slaves-order

-+

-+ This key specifies in which order slave connections are -+ auto-activated on boot or when the master activates -+ them. Allowed values are name (order -+ connection by interface name, the default), or -+ index (order slaves by their kernel -+ index). -+

-+ - - - -@@ -601,7 +612,7 @@ ipv6.ip6-privacy=0 +@@ -622,7 +622,7 @@ ipv6.ip6-privacy=0

ethernet.cloned-mac-address

@@ -63,16 +45,7 @@ index b43f5ac56..a57e46ebe 100644

ethernet.generate-mac-address-mask

-@@ -609,7 +620,7 @@ ipv6.ip6-privacy=0 - - -

ethernet.mtu

--

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 a default of 1500.

-+

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 not reconfigured during activation.

- - -

ethernet.wake-on-lan

-@@ -652,7 +663,7 @@ ipv6.ip6-privacy=0 +@@ -692,7 +692,7 @@ ipv6.ip6-privacy=0

wifi.cloned-mac-address

@@ -81,69 +54,26 @@ index b43f5ac56..a57e46ebe 100644

wifi.generate-mac-address-mask

+@@ -1363,4 +1363,4 @@ interface-name:vboxnet*,except:interface-name:vboxnet2 + + +- +\ No newline at end of file ++ diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html -index b46b05ed6..229f11b40 100644 +index 4f62d52fc..14bc3c4c5 100644 --- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html +++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html -@@ -250,6 +250,9 @@ Udi readable s - for a way to track a specific piece of hardware across reboot or hotplug, - use a MAC address or USB serial number. -

-+

Note that non-UTF-8 characters are backslash escaped. Use g_strcompress() -+ to obtain the true (non-UTF-8) string. -+

- -
-
-@@ -258,6 +261,9 @@ Udi readable s - Interface readable s - -

The name of the device's control (and often data) interface. -+ Note that non UTF-8 characters are backslash escaped, so the -+ resulting name may be longer then 15 characters. Use g_strcompress() -+ to revert the escaping. -

-
-
-@@ -270,6 +276,9 @@ IpInterface readable s - not refer to the actual data interface until the device has successfully - established a data connection, indicated by the device's State becoming - ACTIVATED. -+ Note that non UTF-8 characters are backslash escaped, so the -+ resulting name may be longer then 15 characters. Use g_strcompress() -+ to revert the escaping. -

- -
-@@ -279,6 +288,8 @@ IpInterface readable s - Driver readable s - -

The driver handling the device. -+ Non-UTF-8 sequences are backslash escaped. Use g_strcompress() -+ to revert. -

- -
-@@ -288,6 +299,8 @@ Driver readable s - DriverVersion readable s - -

The version of the driver handling the device. -+ Non-UTF-8 sequences are backslash escaped. Use g_strcompress() -+ to revert. -

- -
-@@ -297,6 +310,8 @@ DriverVersion readable s - FirmwareVersion readable s - -

The firmware version for the device. -+ Non-UTF-8 sequences are backslash escaped. Use g_strcompress() -+ to revert. -

- -
+@@ -538,4 +538,4 @@ Real readable b + + +- +\ No newline at end of file ++ diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5 -index 339a106de..3809de066 100644 +index aa31c809a..6649f0307 100644 --- a/man/NetworkManager.conf.5 +++ b/man/NetworkManager.conf.5 @@ -144,7 +144,7 @@ internal @@ -164,23 +94,7 @@ index 339a106de..3809de066 100644 /var/run/NetworkManager/resolv\&.conf\&. .sp symlink: If -@@ -295,6 +295,15 @@ The number of times a connection activation should be automatically tried before - connection\&.autoconnect\-retries - property set to \-1\&. If not specified, connections will be retried 4 times\&. - .RE -+.PP -+\fIslaves\-order\fR -+.RS 4 -+This key specifies in which order slave connections are auto\-activated on boot or when the master activates them\&. Allowed values are -+name -+(order connection by interface name, the default), or -+index -+(order slaves by their kernel index)\&. -+.RE - .SH "KEYFILE SECTION" - .PP - This section contains keyfile\-plugin\-specific options, and is normally only used when you are not using any other distro\-specific plugin\&. -@@ -584,7 +593,7 @@ for details)\&. A default value is only consulted if the corresponding per\-conn +@@ -601,7 +601,7 @@ If left unspecified, the default value is 3 tries before failing the connection\ .PP \fIethernet\&.cloned\-mac\-address\fR .RS 4 @@ -189,16 +103,7 @@ index 339a106de..3809de066 100644 .RE .PP \fIethernet\&.generate\-mac\-address\-mask\fR -@@ -593,7 +602,7 @@ If left unspecified, it defaults to "preserve"\&. - .PP - \fIethernet\&.mtu\fR - .RS 4 --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 a default of 1500\&. -+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 not reconfigured during activation\&. - .RE - .PP - \fIethernet\&.wake\-on\-lan\fR -@@ -641,7 +650,7 @@ If left unspecified, default value of 60 seconds is used\&. +@@ -673,7 +673,7 @@ If left unspecified, default value of 60 seconds is used\&. .PP \fIwifi\&.cloned\-mac\-address\fR .RS 4 @@ -208,5 +113,5 @@ index 339a106de..3809de066 100644 .PP \fIwifi\&.generate\-mac\-address\-mask\fR -- -2.13.0 +2.14.3 diff --git a/SOURCES/NetworkManager.conf b/SOURCES/NetworkManager.conf index d36da0b..1979ea6 100644 --- a/SOURCES/NetworkManager.conf +++ b/SOURCES/NetworkManager.conf @@ -2,17 +2,49 @@ # # See "man 5 NetworkManager.conf" for details. # +# The directories /usr/lib/NetworkManager/conf.d/ and /var/run/NetworkManager/conf.d/ +# can contain additional configuration snippets installed by packages. These files are +# read before NetworkManager.conf and have thus lowest priority. # The directory /etc/NetworkManager/conf.d/ can contain additional configuration -# snippets. Those snippets override the settings from this main file. +# snippets. Those snippets are merged last and overwrite the settings from this main +# file. # -# The files within conf.d/ directory are read in asciibetical order. +# The files within one conf.d/ directory are read in asciibetical order. +# +# If /etc/NetworkManager/conf.d/ contains a file with the same name as +# /usr/lib/NetworkManager/conf.d/, the latter file is shadowed and thus ignored. +# Hence, to disable loading a file from /usr/lib/NetworkManager/conf.d/ you can +# put an empty file to /etc with the same name. The same applies with respect +# to the directory /var/run/NetworkManager/conf.d where files in /var/run shadow +# /usr/lib and are themselves shadowed by files under /etc. # # If two files define the same key, the one that is read afterwards will overwrite # the previous one. [main] -plugins=ifcfg-rh +#plugins=ifcfg-rh,ibft + [logging] -#level=DEBUG +# When debugging NetworkManager, enabling debug logging is of great help. +# +# Logfiles contain no passwords and little sensitive information. But please +# check before posting the file online. You can also personally hand over the +# logfile to a NM developer to treat it confidential. Meet us on #nm on freenode. +# Please post full logfiles except minimal modifications of private data. +# +# You can also change the log-level at runtime via +# $ nmcli general logging level TRACE domains ALL +# However, usually it's cleaner to enable debug logging +# in the configuration and restart NetworkManager so that +# debug logging is enabled from the start. +# +# You will find the logfiles in syslog, for example via +# $ journalctl -u NetworkManager +# +# Note that debug logging of NetworkManager can be quite verbose. Some messages +# might be rate-limited by the logging daemon (see RateLimitIntervalSec, RateLimitBurst +# in man journald.conf). +# +#level=TRACE #domains=ALL diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec index d246d10..29c6a2e 100644 --- a/SPECS/NetworkManager.spec +++ b/SPECS/NetworkManager.spec @@ -7,9 +7,9 @@ %global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad) %global epoch_version 1 -%global rpm_version 1.8.0 -%global real_version 1.8.0 -%global release_version 11 +%global rpm_version 1.10.2 +%global real_version 1.10.2 +%global release_version 13 %global snapshot %{nil} %global git_sha %{nil} @@ -30,6 +30,10 @@ %global snap %{?snapshot_dot}%{?git_sha_dot} +%global real_version_major %(printf '%s' '%{real_version}' | sed -n 's/^\\([1-9][0-9]*\\.[1-9][0-9]*\\)\\.[1-9][0-9]*$/\\1/p') + +%global is_devel_build %(printf '%s' '%{real_version}' | sed -n 's/^1\\.\\([0-9]*[13579]\\)\\..*/1/p') + ############################################################################### %bcond_without adsl @@ -37,14 +41,20 @@ %bcond_without wwan %bcond_without team %bcond_without wifi +%bcond_without ovs %bcond_without ppp %bcond_without nmtui -# on RHEL, we don't regenerate the documentation +# on RHEL we don't regenerate the documentation %bcond_with regen_docs +%if 0%{is_devel_build} +%bcond_without debug +%else %bcond_with debug +%endif %bcond_without test +%bcond_with sanitizer ############################################################################### @@ -73,48 +83,42 @@ Group: System Environment/Base License: GPLv2+ URL: http://www.gnome.org/projects/NetworkManager/ -Source: https://download.gnome.org/sources/NetworkManager/1.8/%{name}-%{real_version}.tar.xz +Source: https://download.gnome.org/sources/NetworkManager/%{real_version_major}/%{name}-%{real_version}.tar.xz Source1: NetworkManager.conf Source2: 00-server.conf Source3: 10-slaves-order.conf Source4: README.nmcs -# needed to adjust pre-generated documentation for RHEL. Before -# removing this one, check that it is no longer needed. +# RHEL downstream patches that change behavior from upstream. +# These are not bugfixes, hence they are also relevant after +# the next rebase of the source tarball. Patch1: 0001-cloned-mac-address-permanent-rh1413312.patch -Patch2: 0002-utils-fix-maybe-uninitialized-in-nm-udev-utils.c.patch -Patch3: 0003-fix-device-run-state-unknown-rh1440171.patch -Patch4: 0004-proxy-crash-rh1450459.patch -Patch5: 0005-device-fix-wait-carrier-rh1450444.patch -Patch6: 0006-dhcp-don-t-add-route-to-DHCP4-server-rh1448987.patch -Patch7: 0007-device-update-ext-conf-before-commit-rh1449873.patch -Patch8: 0008-utf8safe-fixes-rh1443114.patch -Patch9: 0009-ifcfg-rh-fix-null-next-hop.patch -Patch10: 0010-bluetooth-nap-crash-rh1454385.patch -Patch11: 0011-device-release-removed-slaves-rh1448907.patch -Patch12: 0012-config-slaves-order-rh1452585.patch -Patch13: 0013-nmcli-fix-8021x-password-raw-rh1456362.patch -Patch14: 0014-translations-rh1382625.patch -Patch15: 0015-ifcfg-rh-legacy-netmask-rh1445414.patch -Patch16: 0016-tui-connect-crash-rh1456826.patch -Patch17: 0017-libnm-fix-reject-vlan-id-4095-rh1456911.patch -Patch18: 0018-periodic-connectivity-check-rh1458399.patch -Patch19: 0019-bond-improve-option-matching-rh1457909.patch -Patch20: 0020-device-fix-external-assume-rh1457242.patch -Patch21: 0021-bond-crash-mode-rh1459580.patch -Patch22: 0022-connectivity-ip-iface-check-rh1459932.patch -Patch23: 0023-persist-nm-owned-in-device-state-rh1376199.patch -Patch24: 0024-fix-delayed-assume-master-rh1452062.patch -Patch25: 0025-improve-logging-assume-rh1452062.patch -Patch26: 0026-apply-route-penality-only-with-defroute-rh1459604.patch -Patch27: 0027-cli-fix-interface-overview-rh1460219.patch -Patch28: 0028-ppp-unexport-ppp-manager-on-dispose.patch -Patch29: 0029-cli-wifi-spurious-output.patch -Patch30: 0030-device-mtu-preserve-rh1460760.patch -Patch31: 0031-don-t-remove-ext-ipv4-addresses-rh1459813.patch -Patch32: 0032-don-t-set-a-fake-permanent-hardware-address.patch -Patch33: 0033-device-fix-delay-startup-complete-for-unrealized-dev.patch -Patch34: 0034-device-fix-frozen-notify-signals-on-unrealize-error-.patch +Patch2: 0002-nm-wait-online-not-require-nm-service-rh1520865.patch + +Patch3: 0003-po-import-translations-rh1481186.patch +Patch4: 0004-bug-fixes-found-by-coverity.patch +Patch5: 0005-clear-unsaved-flag-on-new-connections-rh1525078.patch +Patch6: 0006-reload-qdiscs-and-tfilters-after-removal-rh1527197.patch +Patch7: 0007-wwan-default-device-route-rh1527934.patch +Patch8: 0008-dhcp-client-id-rh1531173.patch +Patch9: 0009-distinct-route-metric-rh1505893.patch +Patch10: 0010-fix-set-connectivity-check-enabled-rh1534477.patch +Patch11: 0011-fix-assertion-delete-volatile-connection-rh1506552.patch +Patch12: 0012-device-increase-carrier-wait-time-rh1520826.patch +Patch13: 0013-ifcfg-ovs-master-rh1519179.patch +Patch14: 0014-device-skip-IP-conf-for-external-devices-rh1530288.patch +Patch15: 0015-route-get-crash-rh1534721.patch +Patch16: 0016-ovs-interface-dhcp-twice-rh1540063.patch +Patch17: 0017-ensure-alignment-of-team-properties-rh1533830.patch +Patch18: 0018-team-link-watchers-fixes-rh1533926.patch +Patch19: 0019-update-team-runner-desc-rh1533799.patch +Patch20: 0020-team-fix-runner-sys_prio-default-rh1533810.patch +Patch21: 0021-avoid-symbol-clash-with-json-glib-rh1535905.patch +Patch22: 0022-team-add-random-runner-rh1538699.patch +Patch23: 0023-ppp-don-t-start-IPv6-configuration-rh1515829.patch +Patch24: 0024-Revert-IPv4-rp_filter-handling-rh1492472.patch +Patch25: 0025-team-clean-runner-tx-hash-on-set-rh1541922.patch +Patch26: 0026-dhcp-fix-lease-renewal-rh1503587.patch # The pregenerated docs contain default values and paths that depend # on the configure options when creating the source tarball. @@ -128,7 +132,6 @@ Requires(postun): systemd Requires: dbus >= %{dbus_version} Requires: glib2 >= %{glib2_version} -Requires: libnl3 >= %{libnl3_version} Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: dhcdbd Obsoletes: NetworkManager < %{obsoletes_device_plugins} @@ -270,13 +273,26 @@ This package contains NetworkManager support for mobile broadband (WWAN) devices. %endif + +%if %{with ovs} +%package ovs +Summary: OpenVSwitch device plugin for NetworkManager +Group: System Environment/Base +Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: openvswitch + +%description ovs +This package contains NetworkManager support for OpenVSwitch bridges. +%endif + + %if %{with ppp} %package ppp Summary: PPP plugin for NetworkManager Group: System Environment/Base Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} Requires: ppp = %{ppp_version} -Provides: NetworkManager = %{epoch}:%{version}-%{release} +Requires: NetworkManager = %{epoch}:%{version}-%{release} Obsoletes: NetworkManager < %{obsoletes_ppp_plugin} %description ppp @@ -408,14 +424,6 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %patch24 -p1 %patch25 -p1 %patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 %patch9999 -p1 %build @@ -428,11 +436,27 @@ intltoolize --automake --copy --force --disable-static \ --with-dhclient=yes \ --with-dhcpcd=no \ + --with-dhcpcanon=no \ + --with-config-dhcp-default=dhclient \ --with-crypto=nss \ +%if %{with test} --enable-more-warnings=error \ +%else + --enable-more-warnings=yes \ +%endif +%if %{with sanitizer} + --enable-address-sanitizer \ + --enable-undefined-sanitizer \ +%else + --disable-address-sanitizer \ + --disable-undefined-sanitizer \ +%endif %if %{with debug} - --with-more-logging \ + --enable-more-logging \ --with-more-asserts=10000 \ +%else + --disable-more-logging \ + --without-more-asserts \ %endif --enable-ld-gc \ --with-libaudit=yes-disabled-by-default \ @@ -463,6 +487,11 @@ intltoolize --automake --copy --force %else --enable-teamdctl=no \ %endif +%if %{with ovs} + --enable-ovs=yes \ +%else + --enable-ovs=no \ +%endif --with-selinux=yes \ --enable-polkit=yes \ --enable-polkit-agent \ @@ -478,7 +507,11 @@ intltoolize --automake --copy --force --with-systemdsystemunitdir=%{systemd_dir} \ --with-system-ca-path=/etc/pki/tls/cert.pem \ --with-dbus-sys-dir=%{dbus_sys_dir} \ +%if %{with test} --with-tests=yes \ +%else + --with-tests=no \ +%endif --with-valgrind=no \ --enable-ifcfg-rh=yes \ %if %{with ppp} @@ -528,6 +561,16 @@ make %{?_smp_mflags} check %endif +%pre +if [ -f "%{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service" ] ; then + # older versions used to install this file, effectively always enabling + # NetworkManager-wait-online.service. We no longer do that and rely on + # preset. + # But on package upgrade we must explicitly enable it (rh#1455704). + systemctl enable NetworkManager-wait-online.service || : +fi + + %post /usr/bin/udevadm control --reload-rules || : /usr/bin/udevadm trigger --subsystem-match=net || : @@ -551,11 +594,11 @@ fi %systemd_postun -%post glib -p /sbin/ldconfig -%postun glib -p /sbin/ldconfig +%post glib -p /sbin/ldconfig +%postun glib -p /sbin/ldconfig -%post libnm -p /sbin/ldconfig -%postun libnm -p /sbin/ldconfig +%post libnm -p /sbin/ldconfig +%postun libnm -p /sbin/ldconfig %files @@ -590,7 +633,7 @@ fi %dir %{nmlibdir}/VPN %{_mandir}/man1/* %{_mandir}/man5/* -%{_mandir}/man7/* +%{_mandir}/man7/nmcli-examples.7* %{_mandir}/man8/* %dir %{_localstatedir}/lib/NetworkManager %dir %{_sysconfdir}/NetworkManager/system-connections @@ -602,8 +645,6 @@ fi %{systemd_dir}/NetworkManager.service %{systemd_dir}/NetworkManager-wait-online.service %{systemd_dir}/NetworkManager-dispatcher.service -%dir %{systemd_dir}/network-online.target.wants -%{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service %dir %{_datadir}/doc/NetworkManager/examples %{_datadir}/doc/NetworkManager/examples/server.conf %doc NEWS AUTHORS README CONTRIBUTING TODO @@ -637,6 +678,13 @@ fi %{_libdir}/%{name}/libnm-wwan.so %endif +%if %{with ovs} +%files ovs +%{_libdir}/%{name}/libnm-device-plugin-ovs.so +%{systemd_dir}/NetworkManager.service.d/NetworkManager-ovs.conf +%{_mandir}/man7/nm-openvswitch.7* +%endif + %if %{with ppp} %files ppp %{_libdir}/pppd/%{ppp_version}/nm-pppd-plugin.so @@ -719,6 +767,98 @@ fi %endif %changelog +* Tue Feb 20 2018 Francesco Giudici - 1:1.10.2-13 +- dhcp: better handle DHCP outages and retry DHCP indefinitely (rh #1503587) + +* Thu Feb 8 2018 Beniamino Galvani - 1:1.10.2-12 +- ppp: don't start IPv6 configuration on the device (rh #1515829) +- device: avoid setting the IPv4 rp_filter (rh #1492472) +- nmcli: team: clear runner-tx-hash before adding new hashes (rh #1541922) + +* Fri Feb 2 2018 Lubomir Rintel - 1:1.10.2-11 +- ovs-interface: avoid starting ip configuration twice (rh #1540063) +- libnm-core: ensure alignment of team.config and other team properties (rh #1533830) +- nmcli: clear link-watchers before adding the new ones (rh #1533926) +- libnm-core: update team.runner description (rh #1533799) +- libnm-core: team: fix runner sys_prio default value (rh #1533810) +- libnm: avoid a symbol clash with json-glib (rh #1535905) +- libnm-core: team: add support to runner "random" (rh #1538699) + +* Fri Jan 19 2018 Beniamino Galvani - 1:1.10.2-10 +- device: skip IP configuration phase for external devices (rh #1530288) +- platform: fix crash during route-get call (rh #1534721) + +* Fri Jan 19 2018 Lubomir Rintel - 1:1.10.2-9 +- ifcfg: don't forget master of ovs interfaces (rh #1519179) + +* Wed Jan 17 2018 Lubomir Rintel - 1:1.10.2-7 +- po: import translations (rh #1481186) +- device: increase carrier wait time to 6 seconds (rh #1520826) + +* Mon Jan 15 2018 Thomas Haller - 1:1.10.2-6 +- core: use distinct route-metric to keep connectivity on first activated device (rh #1505893) +- core: fix enabling connectivity-check-enabled via D-Bus (rh #1534477) +- core: fix invalid assertion deleting volatile connection (rh #1506552) + +* Tue Jan 9 2018 Beniamino Galvani - 1:1.10.2-5 +- wwan: add default route even if modem didn't return a gateway (rh #1527934) +- dhcp: fix assertion failure for dhcp-client-id (rh #1531173) + +* Fri Jan 5 2018 Beniamino Galvani - 1:1.10.2-4 +- settings: clear unsaved flag on new connections (rh #1525078) +- platform-linux: reload qdiscs and tfilters after removing them (rh #1527197) + +* Tue Dec 12 2017 Thomas Haller - 1:1.10.2-3 +- all: various bug fixes found by coverity + +* Tue Dec 12 2017 Lubomir Rintel - 1:1.10.2-2 +- po: import translations (rh #1481186) + +* Tue Dec 12 2017 Beniamino Galvani - 1:1.10.2-1 +- Update to upstream release 1.10.2 +- all: added support for onlink route attribute (rh #1428334) +- device: don't necessarily fail the connection when ipv4 DAD fails (rh #1508001) +- device: update device mtu from ip interface platform when required (rh #1460217) +- device: extend carrier lost defer time after MTU change (rh #1487702) +- ifcfg-rh: persist the wep key type (rh #1518177) +- settings: introduce an Update2() D-Bus method (rh #1401515) + +* Fri Dec 8 2017 Thomas Haller - 1:1.10.0-2 +- core: don't let NetworkManager-wait-online service require NetworkManager (rh #1520865) + +* Fri Nov 10 2017 Beniamino Galvani - 1:1.10.0-1 +- Update to upstream release 1.10.0 + +* Wed Nov 8 2017 Beniamino Galvani - 1:1.10.0-0.2.rc1 +- Update to first Release Candidate of NetworkManager 1.10 +- added basic OpenVSwitch support (rh #1470282) +- fixed race condition in the nmcli secret agent (rh #1438476) + +* Fri Oct 27 2017 Beniamino Galvani - 1:1.10.0-0.1.git20171024.b16c853b +- Update to a 1.10.0 snapshot: +- core: fix connection auto-activation after slave failure (rh #1310676) +- bridge: introduce a bridge.group-forward-mask connection property (rh #1358615) +- ifcfg-rh: fix write of 802.1X EAP-LEAP connections (rh #1374660) +- vlan: fix setting MTU value (rh #1414901) +- core: support multiple routing tables (rh #1436531) +- ipv6: support multiple default routes (rh #1445417) +- core: extend D-Bus API to better export active connection state (rh #1454883) +- nmcli: fix crash (rh #1458311) +- device: avoid touching IPv6 on external connections without IPv6 conf (rh #1462260) +- core: downgrade warning messages about missing parent devices (rh #1490157) +- device: fix delay startup complete for unrealized devices (rh #1498807) +- device: fix frozen notify signals on unrealize error path (rh #1498755) +- tui: improve tracking of activation state (rh #1500651) +- ifcfg-rh: allow updates to connections with routing rule files (rh #1384799) +- core: fix taking over external connection on modification (rh #1462223) +- bond: ignore miimon option only when it is zero (rh #1463077) +- core: don't re-add routes that already exist (rh #1470930) +- tui: guess the prefix length (netmask) based on network class (rh #1474295) +- dhcp: fix dhcp over Infiniband when using the internal client (rh #1477678) +- device: extend wait time for carrier after MTU change (rh #1487702) +- cli: wifi: connect with PSK when the AP supports WPA-PSK and WPA-EAP (rh #1492064) +- core: fixed memory leak in dhcp code (rh #1461643) + * Fri Oct 6 2017 Thomas Haller - 1:1.8.0-11 - core: fix wrongly delaying startup-complete for unrealized devices (rh#1498807) - core: fix unfreezing signals when unrealizing device fails (rh#1498755)