From c153dfc53c8a6ce63c58473f6b4826b7b5e452f8 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7x64builder0 Date: Sat, 1 Aug 2020 11:22:21 +0200 Subject: [PATCH] NetworkManager package update Signed-off-by: basebuilder_pel7x64builder0 --- ...oned-mac-address-permanent-rh1413312.patch | 14 +- ...-no-leading-zero-client-id-rh1556983.patch | 19 +- .../0004-ibft-cap-sys-admin-rh1371201.patch | 7 +- ...internal-default-client-id-rh1695723.patch | 33 +- ...eyfile-file-name-extension-rh1697858.patch | 35 +- ...lient-include-conditionals-rh1758550.patch | 136 +++++++ ...1001-fix-arp-announcements-rh1767681.patch | 58 +++ SOURCES/1002-ovs-cloned-mac-rh1740557.patch | 339 ++++++++++++++++++ SOURCES/20-connectivity-fedora.conf | 5 + SOURCES/20-connectivity-redhat.conf | 5 + SOURCES/9999-fix-pregen-doc.patch | 24 +- SPECS/NetworkManager.spec | 73 ++-- 12 files changed, 649 insertions(+), 99 deletions(-) create mode 100644 SOURCES/1000-dhclient-include-conditionals-rh1758550.patch create mode 100644 SOURCES/1001-fix-arp-announcements-rh1767681.patch create mode 100644 SOURCES/1002-ovs-cloned-mac-rh1740557.patch diff --git a/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch b/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch index fb8e464b..6ea0e366 100644 --- a/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch +++ b/SOURCES/0001-cloned-mac-address-permanent-rh1413312.patch @@ -1,4 +1,4 @@ -From 488696bfaabe783972f756f53ff2cce7b0aa8d4b Mon Sep 17 00:00:00 2001 +From 014a4b315205203dcfee659104b0e19204156a16 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Feb 2017 20:25:56 +0100 Subject: [PATCH] Revert "device: change default value for cloned-mac-address @@ -16,7 +16,7 @@ This reverts commit fae5ecec5a4d9987a1915441602cb78275a9f490. 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in -index 59ca4cc..5fbafb7 100644 +index 811f2f16d630..8f1be4d89443 100644 --- a/clients/common/settings-docs.h.in +++ b/clients/common/settings-docs.h.in @@ -7,7 +7,7 @@ @@ -38,7 +38,7 @@ index 59ca4cc..5fbafb7 100644 #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 7f08430..b916a7c 100644 +index 182e71930210..cf97ccb98a86 100644 --- a/libnm-core/nm-setting-wired.c +++ b/libnm-core/nm-setting-wired.c @@ -1150,8 +1150,8 @@ nm_setting_wired_class_init (NMSettingWiredClass *klass) @@ -63,7 +63,7 @@ index 7f08430..b916a7c 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 b4cb105..ac3f168 100644 +index d8056c6c598e..188a40021862 100644 --- a/libnm-core/nm-setting-wireless.c +++ b/libnm-core/nm-setting-wireless.c @@ -1405,8 +1405,8 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *klass) @@ -88,7 +88,7 @@ index b4cb105..ac3f168 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 2893424..a8c4d0b 100644 +index 289342473a30..a8c4d0b9b596 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -705,7 +705,7 @@ ipv6.ip6-privacy=0 @@ -110,10 +110,10 @@ index 2893424..a8c4d0b 100644 wifi.generate-mac-address-mask diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c -index 06ad2ce82..c0867a04b 100644 +index 43f03739bcf9..fafd71b38eb8 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c -@@ -15453,7 +15453,8 @@ _get_cloned_mac_address_setting (NMDevice *self, NMConnection *connection, gbool +@@ -15555,7 +15555,8 @@ _get_cloned_mac_address_setting (NMDevice *self, NMConnection *connection, gbool : NM_CON_DEFAULT ("ethernet.cloned-mac-address"), self); diff --git a/SOURCES/0003-dhclient-no-leading-zero-client-id-rh1556983.patch b/SOURCES/0003-dhclient-no-leading-zero-client-id-rh1556983.patch index b3516dc8..b308cc29 100644 --- a/SOURCES/0003-dhclient-no-leading-zero-client-id-rh1556983.patch +++ b/SOURCES/0003-dhclient-no-leading-zero-client-id-rh1556983.patch @@ -1,4 +1,4 @@ -From bbee3b6833ab1792e75470db5f3b7022e9a965f5 Mon Sep 17 00:00:00 2001 +From 6b92df3dfca4854e35cb87024ccd17a34e731277 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 20 Jun 2018 11:49:22 +0200 Subject: [PATCH 1/2] Revert "dhclient: write client-id with backslash and @@ -11,10 +11,10 @@ This reverts commit 0e4b33ee7552b036332f1bdbfed78f8ee75f000e. 2 files changed, 2 insertions(+), 33 deletions(-) diff --git a/src/dhcp/nm-dhcp-dhclient-utils.c b/src/dhcp/nm-dhcp-dhclient-utils.c -index cbd706f..7324597 100644 +index 85ca3704d12a..6cbc0c97c535 100644 --- a/src/dhcp/nm-dhcp-dhclient-utils.c +++ b/src/dhcp/nm-dhcp-dhclient-utils.c -@@ -124,7 +124,7 @@ add_ip4_config (GString *str, GBytes *client_id, const char *hostname, gboolean +@@ -135,7 +135,7 @@ add_ip4_config (GString *str, GBytes *client_id, const char *hostname, gboolean * as long as all the characters are printable. */ for (i = 1; (p[0] == 0) && i < l; i++) { @@ -24,7 +24,7 @@ index cbd706f..7324597 100644 } diff --git a/src/dhcp/tests/test-dhcp-dhclient.c b/src/dhcp/tests/test-dhcp-dhclient.c -index 55d712b..7df0720 100644 +index 1eac36434cf9..fb9251f25a2e 100644 --- a/src/dhcp/tests/test-dhcp-dhclient.c +++ b/src/dhcp/tests/test-dhcp-dhclient.c @@ -178,36 +178,6 @@ test_quote_client_id (void) @@ -77,7 +77,8 @@ index 55d712b..7df0720 100644 -- 2.21.0 -From 2049c9c861f262aa6c949f45cd401ec515c2f2d0 Mon Sep 17 00:00:00 2001 + +From 2203e61c9cee7b3fcb6052523cdc2721e54496c7 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Wed, 20 Jun 2018 11:50:51 +0200 Subject: [PATCH 2/2] Revert "dhcp: dhclient: set type 0 for printable client @@ -92,10 +93,10 @@ This reverts commit 8ffa22d10d3001405965826b46463663fd2dacc2. 2 files changed, 17 insertions(+), 116 deletions(-) diff --git a/src/dhcp/nm-dhcp-dhclient-utils.c b/src/dhcp/nm-dhcp-dhclient-utils.c -index 7324597..4eb4c5d 100644 +index 6cbc0c97c535..3338fbff2e93 100644 --- a/src/dhcp/nm-dhcp-dhclient-utils.c +++ b/src/dhcp/nm-dhcp-dhclient-utils.c -@@ -137,9 +137,8 @@ add_ip4_config (GString *str, GBytes *client_id, const char *hostname, gboolean +@@ -148,9 +148,8 @@ add_ip4_config (GString *str, GBytes *client_id, const char *hostname, gboolean g_string_append_printf (str, "%02x", (guint8) p[i]); } } else { @@ -106,7 +107,7 @@ index 7324597..4eb4c5d 100644 g_string_append_len (str, p + 1, l - 1); g_string_append_c (str, '"'); } -@@ -177,60 +176,31 @@ read_client_id (const char *str) +@@ -188,60 +187,31 @@ read_client_id (const char *str) { gs_free char *s = NULL; char *p; @@ -175,7 +176,7 @@ index 7324597..4eb4c5d 100644 static gboolean diff --git a/src/dhcp/tests/test-dhcp-dhclient.c b/src/dhcp/tests/test-dhcp-dhclient.c -index 7df0720..acdd276 100644 +index fb9251f25a2e..f6267cd2816d 100644 --- a/src/dhcp/tests/test-dhcp-dhclient.c +++ b/src/dhcp/tests/test-dhcp-dhclient.c @@ -151,7 +151,7 @@ test_override_client_id (void) diff --git a/SOURCES/0004-ibft-cap-sys-admin-rh1371201.patch b/SOURCES/0004-ibft-cap-sys-admin-rh1371201.patch index 79a4a1c2..e7f3bfb9 100644 --- a/SOURCES/0004-ibft-cap-sys-admin-rh1371201.patch +++ b/SOURCES/0004-ibft-cap-sys-admin-rh1371201.patch @@ -20,13 +20,14 @@ index ff90456ff..680b5889a 100644 KillMode=process -CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT +#CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT - + -# ibft settings plugin calls iscsiadm which needs CAP_SYS_ADMIN -#CapabilityBoundingSet=CAP_SYS_ADMIN +# ibft settings plugin calls iscsiadm which needs CAP_SYS_ADMIN (rh#1371201) +CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT CAP_SYS_ADMIN - + ProtectSystem=true ProtectHome=read-only --- +-- 2.17.1 + diff --git a/SOURCES/0005-dhcp-internal-default-client-id-rh1695723.patch b/SOURCES/0005-dhcp-internal-default-client-id-rh1695723.patch index 4abfd459..443500e3 100644 --- a/SOURCES/0005-dhcp-internal-default-client-id-rh1695723.patch +++ b/SOURCES/0005-dhcp-internal-default-client-id-rh1695723.patch @@ -1,4 +1,4 @@ -From 5ca3888861d4f05935c9f330804c1f30ab8c57e5 Mon Sep 17 00:00:00 2001 +From c63d39ed73da9cd804e7ace3b11debb49ed5f6b4 Mon Sep 17 00:00:00 2001 From: Francesco Giudici Date: Tue, 9 Apr 2019 11:41:27 +0200 Subject: [PATCH] dhcp/internal: make default dhcp-client-id based on systemd @@ -16,31 +16,32 @@ This reverts commit cfd696cc3cf43f5f510046b757949546bcee4cdc. 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c -index 7063c82cf..4a40d2e52 100644 +index fe843a2ce43c..b998bf465b25 100644 --- a/src/dhcp/nm-dhcp-manager.c +++ b/src/dhcp/nm-dhcp-manager.c @@ -237,7 +237,7 @@ client_start (NMDhcpManager *self, - * - * - for IPv4, the calling code may determine a client-id (from NM's connection profile). - * If present, it is taken. If not present, the DHCP plugin uses a plugin specific default. + * + * - for IPv4, the calling code may determine a client-id (from NM's connection profile). + * If present, it is taken. If not present, the DHCP plugin uses a plugin specific default. - * - for "internal" plugin, the default is just "mac". + * - for "internal" plugin, the default is just "duid". - * - for "dhclient", we try to get the configuration from dhclient's /etc/dhcp or fallback - * to whatever dhclient uses by default. - * We do it this way, because for dhclient the user may configure a default + * - for "dhclient", we try to get the configuration from dhclient's /etc/dhcp or fallback + * to whatever dhclient uses by default. + * We do it this way, because for dhclient the user may configure a default diff --git a/src/dhcp/nm-dhcp-systemd.c b/src/dhcp/nm-dhcp-systemd.c -index 70ed87150..84973aa2a 100644 +index 1cd5ba278283..b6344d9bbf9c 100644 --- a/src/dhcp/nm-dhcp-systemd.c +++ b/src/dhcp/nm-dhcp-systemd.c @@ -750,7 +750,8 @@ ip4_start (NMDhcpClient *client, - - client_id = nm_dhcp_client_get_client_id (client); - if (!client_id) { + + client_id = nm_dhcp_client_get_client_id (client); + if (!client_id) { - client_id_new = nm_utils_dhcp_client_id_mac (arp_type, hwaddr_arr, hwaddr_len); + client_id_new = nm_utils_dhcp_client_id_systemd_node_specific (TRUE, + nm_dhcp_client_get_iface (client)); - client_id = client_id_new; - } + client_id = client_id_new; + } + +-- +2.21.0 --- -2.20.1 diff --git a/SOURCES/0006-no-keyfile-file-name-extension-rh1697858.patch b/SOURCES/0006-no-keyfile-file-name-extension-rh1697858.patch index 38db1cb6..bc1a3b69 100644 --- a/SOURCES/0006-no-keyfile-file-name-extension-rh1697858.patch +++ b/SOURCES/0006-no-keyfile-file-name-extension-rh1697858.patch @@ -1,7 +1,7 @@ -From a67de1d4f7025f86701c1e2cc319238cbbc88f98 Mon Sep 17 00:00:00 2001 +From d943f1093603176864cd029a013d4216ef5f277f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 9 Apr 2019 18:00:21 +0200 -Subject: [PATCH 1/1] Revert "keyfile: also add ".nmconnection" extension when +Subject: [PATCH] Revert "keyfile: also add ".nmconnection" extension when writing keyfiles in /etc" This reverts commit d37ad15f12bafd91cf724cda50aea7093e04bf7a. @@ -10,30 +10,31 @@ This reverts commit d37ad15f12bafd91cf724cda50aea7093e04bf7a. 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/settings/plugins/keyfile/nms-keyfile-writer.c b/src/settings/plugins/keyfile/nms-keyfile-writer.c -index 8c75d8c79..fe05df28e 100644 +index 2e06aeb9da69..ee652881d60b 100644 --- a/src/settings/plugins/keyfile/nms-keyfile-writer.c +++ b/src/settings/plugins/keyfile/nms-keyfile-writer.c @@ -357,16 +357,19 @@ nms_keyfile_writer_connection (NMConnection *connection, GError **error) { - const char *keyfile_dir; + const char *keyfile_dir; + gboolean with_extension = FALSE; - - if (save_to_disk) - keyfile_dir = nms_keyfile_utils_get_path (); + + if (save_to_disk) + keyfile_dir = nms_keyfile_utils_get_path (); - else + else { - keyfile_dir = NM_KEYFILE_PATH_NAME_RUN; + keyfile_dir = NM_KEYFILE_PATH_NAME_RUN; + with_extension = TRUE; + } - - return _internal_write_connection (connection, - keyfile_dir, - nms_keyfile_utils_get_path (), + + return _internal_write_connection (connection, + keyfile_dir, + nms_keyfile_utils_get_path (), - TRUE, + with_extension, - 0, - 0, - existing_path, --- -2.20.1 + 0, + 0, + existing_path, +-- +2.21.0 + diff --git a/SOURCES/1000-dhclient-include-conditionals-rh1758550.patch b/SOURCES/1000-dhclient-include-conditionals-rh1758550.patch new file mode 100644 index 00000000..b113dd0c --- /dev/null +++ b/SOURCES/1000-dhclient-include-conditionals-rh1758550.patch @@ -0,0 +1,136 @@ +From 7a5509053a78bf92511626ca06fdb61c2977693f Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Sun, 6 Oct 2019 08:27:18 +0200 +Subject: [PATCH] dhcp: include conditionals from existing dhclient + configuration + +Since commit 159ff23268b1 ('dhcp/dhclient-utils: skip over +dhclient.conf blocks') we skip blocks enclosed in lines containing '{' +and '}' because NM should ignore 'lease', 'alias' and other +declarations. However, conditional statements seem useful and should +not be skipped. + +https://bugzilla.redhat.com/show_bug.cgi?id=1758550 +(cherry picked from commit b58e4d311da630ea8d14f60ca3667710877e455d) +(cherry picked from commit 58ffded2d0a317c3a480821272b41780aff0e64e) +(cherry picked from commit 497101fd1e44128496d14a3b8b7496de7febe2f0) +--- + src/dhcp/nm-dhcp-dhclient-utils.c | 43 +++++++++++++++++++++-------- + src/dhcp/tests/test-dhcp-dhclient.c | 19 ++++++++++++- + 2 files changed, 50 insertions(+), 12 deletions(-) + +diff --git a/src/dhcp/nm-dhcp-dhclient-utils.c b/src/dhcp/nm-dhcp-dhclient-utils.c +index 3338fbff2..01d0fc020 100644 +--- a/src/dhcp/nm-dhcp-dhclient-utils.c ++++ b/src/dhcp/nm-dhcp-dhclient-utils.c +@@ -275,11 +275,13 @@ nm_dhcp_dhclient_create_config (const char *interface, + if (orig_contents) { + gs_free const char **lines = NULL; + gsize line_i; +- int nest = 0; ++ nm_auto_free_gstring GString *blocks_stack = NULL; ++ guint blocks_skip = 0; + gboolean in_alsoreq = FALSE; + gboolean in_req = FALSE; + char intf[IFNAMSIZ]; + ++ blocks_stack = g_string_new (NULL); + g_string_append_printf (new_contents, _("# Merged from %s\n\n"), orig_path); + intf[0] = '\0'; + +@@ -297,19 +299,38 @@ nm_dhcp_dhclient_create_config (const char *interface, + if (in_req) { + /* pass */ + } else if (strchr (p, '{')) { +- nest++; +- if ( !intf[0] +- && NM_STR_HAS_PREFIX (p, "interface")) +- if (read_interface (p, intf, sizeof (intf))) +- continue; ++ if ( NM_STR_HAS_PREFIX (p, "lease") ++ || NM_STR_HAS_PREFIX (p, "alias") ++ || NM_STR_HAS_PREFIX (p, "interface") ++ || NM_STR_HAS_PREFIX (p, "pseudo")) { ++ /* skip over these blocks, except 'interface' when it ++ * matches the current interface */ ++ blocks_skip++; ++ g_string_append_c (blocks_stack, 'b'); ++ if ( !intf[0] ++ && NM_STR_HAS_PREFIX (p, "interface")) { ++ if (read_interface (p, intf, sizeof (intf))) ++ continue; ++ } ++ } else { ++ /* allow other blocks (conditionals) */ ++ if (!strchr (p, '}')) /* '} else {' */ ++ g_string_append_c (blocks_stack, 'c'); ++ } + } else if (strchr (p, '}')) { +- if (nest) +- nest--; +- intf[0] = '\0'; +- continue; ++ if (blocks_stack->len > 0) { ++ if (blocks_stack->str[blocks_stack->len - 1] == 'b') { ++ g_string_truncate (blocks_stack, blocks_stack->len - 1); ++ nm_assert(blocks_skip > 0); ++ blocks_skip--; ++ intf[0] = '\0'; ++ continue; ++ } ++ g_string_truncate (blocks_stack, blocks_stack->len - 1); ++ } + } + +- if (nest && !intf[0]) ++ if (blocks_skip > 0 && !intf[0]) + continue; + + if (intf[0] && !nm_streq (intf, interface)) +diff --git a/src/dhcp/tests/test-dhcp-dhclient.c b/src/dhcp/tests/test-dhcp-dhclient.c +index f6267cd28..90480955f 100644 +--- a/src/dhcp/tests/test-dhcp-dhclient.c ++++ b/src/dhcp/tests/test-dhcp-dhclient.c +@@ -900,6 +900,11 @@ test_structured (void) + " request subnet-mask, broadcast-address, time-offset, routers,\n" + " domain-search, domain-name, domain-name-servers, host-name;\n" + " require subnet-mask, domain-name-servers;\n" ++ " if not option domain-name = \"example.org\" {\n" ++ " prepend domain-name-servers 127.0.0.1;\n" ++ " } else {\n" ++ " prepend domain-name-servers 127.0.0.2;\n" ++ " } \n" + " } \n" + "\n" + "pseudo \"secondary\" \"eth0\" { \n" +@@ -926,7 +931,13 @@ test_structured (void) + " interface \"eth0\";\n" + " fixed-address 192.0.2.2;\n" + " option subnet-mask 255.255.255.0;\n" +- " } \n"; ++ " } \n" ++ "if not option domain-name = \"example.org\" {\n" ++ " prepend domain-name-servers 127.0.0.1;\n" ++ " if not option domain-name = \"useless.example.com\" {\n" ++ " prepend domain-name-servers 127.0.0.2;\n" ++ " }\n" ++ "}\n"; + + static const char *const expected = \ + "# Created by NetworkManager\n" +@@ -937,6 +948,12 @@ test_structured (void) + "send dhcp-client-identifier \"sad-and-useless\";\n" + "send dhcp-lease-time 8086;\n" + "require subnet-mask;\n" ++ "if not option domain-name = \"example.org\" {\n" ++ "prepend domain-name-servers 127.0.0.1;\n" ++ "if not option domain-name = \"useless.example.com\" {\n" ++ "prepend domain-name-servers 127.0.0.2;\n" ++ "}\n" ++ "}\n" + "\n" + "option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;\n" + "option ms-classless-static-routes code 249 = array of unsigned integer 8;\n" +-- +2.21.0 + diff --git a/SOURCES/1001-fix-arp-announcements-rh1767681.patch b/SOURCES/1001-fix-arp-announcements-rh1767681.patch new file mode 100644 index 00000000..ed341277 --- /dev/null +++ b/SOURCES/1001-fix-arp-announcements-rh1767681.patch @@ -0,0 +1,58 @@ +From dae15bf2b3d7ebef817cacf22bbbc3a0e5ff1424 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Mon, 4 Nov 2019 14:19:12 +0100 +Subject: [PATCH] acd: poll the acd fd after starting the announcements + +In nm_acd_manager_announce_addresses() we should not only start the +probes but also add the acd file descriptor to the main loop. +Otherwise, a timer is armed to send the announcements but it never +fires and no announcements are sent. + +Fixes: d9a4b59c18e3 ('acd: adapt NM code and build options') + +https://bugzilla.redhat.com/show_bug.cgi?id=1767681 +(cherry picked from commit 14992ab9cdb6394d133c8ac7b88ad1e4a1e995b0) +(cherry picked from commit c36da8b990dcb4858e27abf87cc45cf7b550538c) +(cherry picked from commit 5798b1b814556e0ca224c092fa2887d603703c38) +--- + src/devices/nm-acd-manager.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/devices/nm-acd-manager.c b/src/devices/nm-acd-manager.c +index f437ce3a8..58bf4fd97 100644 +--- a/src/devices/nm-acd-manager.c ++++ b/src/devices/nm-acd-manager.c +@@ -345,6 +345,8 @@ nm_acd_manager_start_probe (NMAcdManager *self, guint timeout) + if (success) + self->state = STATE_PROBING; + ++ nm_assert (!self->channel); ++ nm_assert (self->event_id == 0); + n_acd_get_fd (self->acd, &fd); + self->channel = g_io_channel_unix_new (fd); + self->event_id = g_io_add_watch (self->channel, G_IO_IN, acd_event, self); +@@ -390,6 +392,7 @@ nm_acd_manager_announce_addresses (NMAcdManager *self) + GHashTableIter iter; + AddressInfo *info; + int r; ++ int fd; + gboolean success = TRUE; + + r = acd_init (self); +@@ -429,6 +432,13 @@ nm_acd_manager_announce_addresses (NMAcdManager *self) + } + } + ++ if (!self->channel) { ++ nm_assert (self->event_id == 0); ++ n_acd_get_fd (self->acd, &fd); ++ self->channel = g_io_channel_unix_new (fd); ++ self->event_id = g_io_add_watch (self->channel, G_IO_IN, acd_event, self); ++ } ++ + return success ? 0 : -NME_UNSPEC; + } + +-- +2.21.0 + diff --git a/SOURCES/1002-ovs-cloned-mac-rh1740557.patch b/SOURCES/1002-ovs-cloned-mac-rh1740557.patch new file mode 100644 index 00000000..f076a070 --- /dev/null +++ b/SOURCES/1002-ovs-cloned-mac-rh1740557.patch @@ -0,0 +1,339 @@ +From bc2e2d8562cc856442e6f449bc422d152527b8c9 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Fri, 25 Oct 2019 10:36:52 +0200 +Subject: [PATCH 1/2] ovs: fix memory leak + +(cherry picked from commit 508c7679cfb06f9d5149e637737d28a958f9131c) +(cherry picked from commit ad17cfff249e7edde0011dc80f09f496ba2fe020) +(cherry picked from commit 836b9e24a475fa9ef5b86d9ca34c751336da4b52) +--- + src/devices/ovs/nm-ovsdb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/devices/ovs/nm-ovsdb.c b/src/devices/ovs/nm-ovsdb.c +index 5b50f8406..8b6dca7a5 100644 +--- a/src/devices/ovs/nm-ovsdb.c ++++ b/src/devices/ovs/nm-ovsdb.c +@@ -1068,7 +1068,7 @@ ovsdb_got_msg (NMOvsdb *self, json_t *msg) + OvsdbMethodCall *call = NULL; + OvsdbMethodCallback callback; + gpointer user_data; +- GError *local = NULL; ++ gs_free_error GError *local = NULL; + + if (json_unpack_ex (msg, &json_error, 0, "{s?:o, s?:s, s?:o, s?:o, s?:o}", + "id", &json_id, +-- +2.21.0 + +From 014c1f0ea0cd1b2723d4f123eb43996a0cf37522 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Thu, 24 Oct 2019 15:59:43 +0200 +Subject: [PATCH 2/2] ovs: allow changing mac address of bridges and interfaces + +Allow changing the cloned MAC address for OVS bridges and +interfaces. The MAC address set on the bridge is propagated by ovs to +the local interface (the one with the same name as the bridge), while +all other internal interfaces use the address defined in the interface +connection. + +https://bugzilla.redhat.com/show_bug.cgi?id=1763734 +https://bugzilla.redhat.com/show_bug.cgi?id=1740557 + +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/321 +(cherry picked from commit 101e65d2bb1920853da4621e220b4825860ec46d) +(cherry picked from commit b366234a3a1deb4a6924744f6b7cafa9f2650e3e) +(cherry picked from commit 5a4a5f637bb65e9833836e724b3beea19158e9f8) +--- + clients/common/nm-meta-setting-desc.c | 1 + + src/devices/ovs/nm-device-ovs-port.c | 5 ++ + src/devices/ovs/nm-ovsdb.c | 88 ++++++++++++++++++++++----- + src/devices/ovs/nm-ovsdb.h | 1 + + 4 files changed, 79 insertions(+), 16 deletions(-) + +diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c +index afeb69a52..e14b23438 100644 +--- a/clients/common/nm-meta-setting-desc.c ++++ b/clients/common/nm-meta-setting-desc.c +@@ -7871,6 +7871,7 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = { + .valid_parts = NM_META_SETTING_VALID_PARTS ( + NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE), + NM_META_SETTING_VALID_PART_ITEM (OVS_BRIDGE, TRUE), ++ NM_META_SETTING_VALID_PART_ITEM (WIRED, FALSE), + ), + ), + SETTING_INFO (OVS_INTERFACE, +diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c +index 8a93a5a9d..39e64b3f1 100644 +--- a/src/devices/ovs/nm-device-ovs-port.c ++++ b/src/devices/ovs/nm-device-ovs-port.c +@@ -102,6 +102,7 @@ enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboo + { + NMActiveConnection *ac_port = NULL; + NMActiveConnection *ac_bridge = NULL; ++ NMDevice *bridge_device; + + if (!configure) + return TRUE; +@@ -111,10 +112,14 @@ enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboo + if (!ac_bridge) + ac_bridge = ac_port; + ++ bridge_device = nm_active_connection_get_device (ac_bridge); ++ + nm_ovsdb_add_interface (nm_ovsdb_get (), + nm_active_connection_get_applied_connection (ac_bridge), + nm_device_get_applied_connection (device), + nm_device_get_applied_connection (slave), ++ bridge_device, ++ slave, + add_iface_cb, g_object_ref (slave)); + + return TRUE; +diff --git a/src/devices/ovs/nm-ovsdb.c b/src/devices/ovs/nm-ovsdb.c +index 8b6dca7a5..82e25f396 100644 +--- a/src/devices/ovs/nm-ovsdb.c ++++ b/src/devices/ovs/nm-ovsdb.c +@@ -28,6 +28,7 @@ + #include "devices/nm-device.h" + #include "platform/nm-platform.h" + #include "nm-core-internal.h" ++#include "devices/nm-device.h" + + /*****************************************************************************/ + +@@ -131,6 +132,8 @@ typedef struct { + NMConnection *bridge; + NMConnection *port; + NMConnection *interface; ++ NMDevice *bridge_device; ++ NMDevice *interface_device; + }; + }; + } OvsdbMethodCall; +@@ -183,6 +186,7 @@ static void + ovsdb_call_method (NMOvsdb *self, OvsdbCommand command, + const char *ifname, + NMConnection *bridge, NMConnection *port, NMConnection *interface, ++ NMDevice *bridge_device, NMDevice *interface_device, + OvsdbMethodCallback callback, gpointer user_data) + { + NMOvsdbPrivate *priv = NM_OVSDB_GET_PRIVATE (self); +@@ -205,6 +209,8 @@ ovsdb_call_method (NMOvsdb *self, OvsdbCommand command, + call->bridge = nm_simple_connection_new_clone (bridge); + call->port = nm_simple_connection_new_clone (port); + call->interface = nm_simple_connection_new_clone (interface); ++ call->bridge_device = g_object_ref (bridge_device); ++ call->interface_device = g_object_ref (interface_device); + break; + case OVSDB_DEL_INTERFACE: + call->ifname = g_strdup (ifname); +@@ -337,17 +343,32 @@ _set_port_interfaces (json_t *params, const char *ifname, json_t *new_interfaces + * Returns an commands that adds new interface from a given connection. + */ + static void +-_insert_interface (json_t *params, NMConnection *interface) ++_insert_interface (json_t *params, NMConnection *interface, NMDevice *interface_device) + { + const char *type = NULL; + NMSettingOvsInterface *s_ovs_iface; + NMSettingOvsPatch *s_ovs_patch; + json_t *options = json_array (); ++ gs_free char *cloned_mac = NULL; ++ gs_free_error GError *error = NULL; ++ json_t *row; + + s_ovs_iface = nm_connection_get_setting_ovs_interface (interface); + if (s_ovs_iface) + type = nm_setting_ovs_interface_get_interface_type (s_ovs_iface); + ++ if (!nm_device_hw_addr_get_cloned (interface_device, ++ interface, ++ FALSE, ++ &cloned_mac, ++ NULL, ++ &error)) { ++ _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", ++ "interface", ++ nm_connection_get_interface_name (interface), ++ error->message); ++ } ++ + json_array_append_new (options, json_string ("map")); + s_ovs_patch = nm_connection_get_setting_ovs_patch (interface); + if (s_ovs_patch) { +@@ -358,14 +379,22 @@ _insert_interface (json_t *params, NMConnection *interface) + json_array_append_new (options, json_array ()); + } + ++ row = json_pack ("{s:s, s:s, s:o, s:[s, [[s, s]]]}", ++ "name", nm_connection_get_interface_name (interface), ++ "type", type ?: "", ++ "options", options, ++ "external_ids", "map", ++ "NM.connection.uuid", nm_connection_get_uuid (interface)); ++ ++ if (cloned_mac) ++ json_object_set_new (row, "mac", json_string (cloned_mac)); ++ + json_array_append_new (params, +- json_pack ("{s:s, s:s, s:{s:s, s:s, s:o, s:[s, [[s, s]]]}, s:s}", +- "op", "insert", "table", "Interface", "row", +- "name", nm_connection_get_interface_name (interface), +- "type", type ?: "", +- "options", options, +- "external_ids", "map", "NM.connection.uuid", nm_connection_get_uuid (interface), +- "uuid-name", "rowInterface")); ++ json_pack ("{s:s, s:s, s:o, s:s}", ++ "op", "insert", ++ "table", "Interface", ++ "row", row, ++ "uuid-name", "rowInterface")); + } + + /** +@@ -429,7 +458,7 @@ _insert_port (json_t *params, NMConnection *port, json_t *new_interfaces) + * Returns an commands that adds new bridge from a given connection. + */ + static void +-_insert_bridge (json_t *params, NMConnection *bridge, json_t *new_ports) ++_insert_bridge (json_t *params, NMConnection *bridge, NMDevice *bridge_device, json_t *new_ports) + { + NMSettingOvsBridge *s_ovs_bridge; + const char *fail_mode = NULL; +@@ -437,9 +466,23 @@ _insert_bridge (json_t *params, NMConnection *bridge, json_t *new_ports) + gboolean rstp_enable = FALSE; + gboolean stp_enable = FALSE; + json_t *row; ++ gs_free_error GError *error = NULL; ++ gs_free char *cloned_mac = NULL; + + s_ovs_bridge = nm_connection_get_setting_ovs_bridge (bridge); + ++ if (!nm_device_hw_addr_get_cloned (bridge_device, ++ bridge, ++ FALSE, ++ &cloned_mac, ++ NULL, ++ &error)) { ++ _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", ++ "bridge", ++ nm_connection_get_interface_name (bridge), ++ error->message); ++ } ++ + row = json_object (); + + if (s_ovs_bridge) { +@@ -464,6 +507,12 @@ _insert_bridge (json_t *params, NMConnection *bridge, json_t *new_ports) + json_pack ("[s, [[s, s]]]", "map", + "NM.connection.uuid", nm_connection_get_uuid (bridge))); + ++ if (cloned_mac) { ++ json_object_set_new (row, "other_config", ++ json_pack ("[s, [[s, s]]]", "map", ++ "hwaddr", cloned_mac)); ++ } ++ + /* Create a new one. */ + json_array_append_new (params, + json_pack ("{s:s, s:s, s:o, s:s}", "op", "insert", "table", "Bridge", +@@ -493,7 +542,8 @@ _inc_next_cfg (const char *db_uuid) + */ + static void + _add_interface (NMOvsdb *self, json_t *params, +- NMConnection *bridge, NMConnection *port, NMConnection *interface) ++ NMConnection *bridge, NMConnection *port, NMConnection *interface, ++ NMDevice *bridge_device, NMDevice *interface_device) + { + NMOvsdbPrivate *priv = NM_OVSDB_GET_PRIVATE (self); + GHashTableIter iter; +@@ -566,7 +616,7 @@ _add_interface (NMOvsdb *self, json_t *params, + _expect_ovs_bridges (params, priv->db_uuid, bridges); + json_array_append_new (new_bridges, json_pack ("[s, s]", "named-uuid", "rowBridge")); + _set_ovs_bridges (params, priv->db_uuid, new_bridges); +- _insert_bridge (params, bridge, new_ports); ++ _insert_bridge (params, bridge, bridge_device, new_ports); + } else { + /* Bridge already exists. */ + g_return_if_fail (ovs_bridge); +@@ -584,7 +634,7 @@ _add_interface (NMOvsdb *self, json_t *params, + } + + if (!has_interface) { +- _insert_interface (params, interface); ++ _insert_interface (params, interface, interface_device); + json_array_append_new (new_interfaces, json_pack ("[s, s]", "named-uuid", "rowInterface")); + } + } +@@ -733,7 +783,8 @@ ovsdb_next_command (NMOvsdb *self) + json_array_append_new (params, json_string ("Open_vSwitch")); + json_array_append_new (params, _inc_next_cfg (priv->db_uuid)); + +- _add_interface (self, params, call->bridge, call->port, call->interface); ++ _add_interface (self, params, call->bridge, call->port, call->interface, ++ call->bridge_device, call->interface_device); + + msg = json_pack ("{s:i, s:s, s:o}", + "id", call->id, +@@ -1385,7 +1436,7 @@ ovsdb_try_connect (NMOvsdb *self) + /* Queue a monitor call before any other command, ensuring that we have an up + * to date view of existing bridged that we need for add and remove ops. */ + ovsdb_call_method (self, OVSDB_MONITOR, NULL, +- NULL, NULL, NULL, _monitor_bridges_cb, NULL); ++ NULL, NULL, NULL, NULL, NULL, _monitor_bridges_cb, NULL); + } + + /*****************************************************************************/ +@@ -1426,6 +1477,7 @@ out: + void + nm_ovsdb_add_interface (NMOvsdb *self, + NMConnection *bridge, NMConnection *port, NMConnection *interface, ++ NMDevice *bridge_device, NMDevice *interface_device, + NMOvsdbCallback callback, gpointer user_data) + { + OvsdbCall *call; +@@ -1435,7 +1487,9 @@ nm_ovsdb_add_interface (NMOvsdb *self, + call->user_data = user_data; + + ovsdb_call_method (self, OVSDB_ADD_INTERFACE, NULL, +- bridge, port, interface, _transact_cb, call); ++ bridge, port, interface, ++ bridge_device, interface_device, ++ _transact_cb, call); + } + + void +@@ -1449,7 +1503,7 @@ nm_ovsdb_del_interface (NMOvsdb *self, const char *ifname, + call->user_data = user_data; + + ovsdb_call_method (self, OVSDB_DEL_INTERFACE, ifname, +- NULL, NULL, NULL, _transact_cb, call); ++ NULL, NULL, NULL, NULL, NULL, _transact_cb, call); + } + + /*****************************************************************************/ +@@ -1466,6 +1520,8 @@ _clear_call (gpointer data) + g_clear_object (&call->bridge); + g_clear_object (&call->port); + g_clear_object (&call->interface); ++ g_clear_object (&call->bridge_device); ++ g_clear_object (&call->interface_device); + break; + case OVSDB_DEL_INTERFACE: + g_clear_pointer (&call->ifname, g_free); +diff --git a/src/devices/ovs/nm-ovsdb.h b/src/devices/ovs/nm-ovsdb.h +index cf9fe2a21..f9dbabbb7 100644 +--- a/src/devices/ovs/nm-ovsdb.h ++++ b/src/devices/ovs/nm-ovsdb.h +@@ -42,6 +42,7 @@ GType nm_ovsdb_get_type (void); + + void nm_ovsdb_add_interface (NMOvsdb *self, + NMConnection *bridge, NMConnection *port, NMConnection *interface, ++ NMDevice *bridge_device, NMDevice *interface_device, + NMOvsdbCallback callback, gpointer user_data); + + void nm_ovsdb_del_interface (NMOvsdb *self, const char *ifname, +-- +2.21.0 + diff --git a/SOURCES/20-connectivity-fedora.conf b/SOURCES/20-connectivity-fedora.conf index 945bea6f..4c398c3e 100644 --- a/SOURCES/20-connectivity-fedora.conf +++ b/SOURCES/20-connectivity-fedora.conf @@ -1,3 +1,8 @@ +# Enable connectivity checking for NetworkManager. +# See `man NetworkManager.conf`. +# +# Note that connectivity checking works badly with rp_filter set to +# strict. Check "/proc/sys/net/ipv4/conf/*/rp_filter". [connectivity] uri=http://fedoraproject.org/static/hotspot.txt response=OK diff --git a/SOURCES/20-connectivity-redhat.conf b/SOURCES/20-connectivity-redhat.conf index e556fd62..94783b35 100644 --- a/SOURCES/20-connectivity-redhat.conf +++ b/SOURCES/20-connectivity-redhat.conf @@ -1,3 +1,8 @@ +# Enable connectivity checking for NetworkManager. +# See `man NetworkManager.conf`. +# +# Note that connectivity checking works badly with rp_filter set to +# strict. Check "/proc/sys/net/ipv4/conf/*/rp_filter". [connectivity] uri=http://static.redhat.com/test/rhel-networkmanager.txt response=OK diff --git a/SOURCES/9999-fix-pregen-doc.patch b/SOURCES/9999-fix-pregen-doc.patch index 32c55803..22a4e7f7 100644 --- a/SOURCES/9999-fix-pregen-doc.patch +++ b/SOURCES/9999-fix-pregen-doc.patch @@ -1,4 +1,4 @@ -From 7c94c0568e3c4a4db49f2a99ff297f7b3efe84e4 Mon Sep 17 00:00:00 2001 +From ea5cb54ccbd2e165d135a01a1c0351eb6b994b82 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 18 Jun 2018 14:01:36 +0200 Subject: [PATCH] patch documentation with the proper default values @@ -14,10 +14,10 @@ Patch the man pages with the proper values. 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html -index ae2b1081e..6e5282b2a 100644 +index 0069f1e4164f..88f8b72e8597 100644 --- a/docs/api/html/NetworkManager.conf.html +++ b/docs/api/html/NetworkManager.conf.html -@@ -180,7 +180,7 @@ plugins-=remove-me +@@ -193,7 +193,7 @@ plugins-=remove-me clients to be installed. The internal option uses a built-in DHCP client which is not currently as featureful as the external clients.

@@ -26,7 +26,7 @@ index ae2b1081e..6e5282b2a 100644 It the chosen plugin is not available, clients are looked for in this order: dhclient, dhcpcd, internal.

-@@ -339,7 +339,7 @@ no-auto-default=* +@@ -359,7 +359,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 @@ -35,7 +35,7 @@ index ae2b1081e..6e5282b2a 100644 Regardless of this setting, NetworkManager will always write resolv.conf to its runtime state directory /var/run/NetworkManager/resolv.conf.

-@@ -625,7 +625,7 @@ ipv6.ip6-privacy=0 +@@ -675,7 +675,7 @@ ipv6.ip6-privacy=0

ethernet.cloned-mac-address

@@ -44,7 +44,7 @@ index ae2b1081e..6e5282b2a 100644

ethernet.generate-mac-address-mask

-@@ -703,7 +703,7 @@ ipv6.ip6-privacy=0 +@@ -771,7 +771,7 @@ ipv6.ip6-privacy=0

wifi.cloned-mac-address

@@ -54,10 +54,10 @@ index ae2b1081e..6e5282b2a 100644

wifi.generate-mac-address-mask

diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5 -index 26b31e1bd..058177719 100644 +index 63959c9fb14b..73ccd7073e27 100644 --- a/man/NetworkManager.conf.5 +++ b/man/NetworkManager.conf.5 -@@ -145,7 +145,7 @@ internal +@@ -155,7 +155,7 @@ internal option uses a built\-in DHCP client which is not currently as featureful as the external clients\&. .sp If this key is missing, it defaults to @@ -66,7 +66,7 @@ index 26b31e1bd..058177719 100644 dhclient, dhcpcd, internal\&. -@@ -254,7 +254,7 @@ rc\-manager\ \&unmanaged +@@ -281,7 +281,7 @@ that contains the original name servers pushed to the DNS plugin\&. .RS 4 Set the resolv\&.conf @@ -75,7 +75,7 @@ index 26b31e1bd..058177719 100644 /var/run/NetworkManager/resolv\&.conf\&. .sp symlink: If -@@ -607,7 +607,7 @@ If left unspecified, the default value is 3 tries before failing the connection\ +@@ -668,7 +668,7 @@ If left unspecified, the default value is 3 tries before failing the connection\ .PP \fIethernet\&.cloned\-mac\-address\fR .RS 4 @@ -84,7 +84,7 @@ index 26b31e1bd..058177719 100644 .RE .PP \fIethernet\&.generate\-mac\-address\-mask\fR -@@ -688,7 +688,7 @@ If left unspecified, default value of 60 seconds is used\&. +@@ -768,7 +768,7 @@ If left unspecified, default value of 60 seconds is used\&. .PP \fIwifi\&.cloned\-mac\-address\fR .RS 4 @@ -94,5 +94,5 @@ index 26b31e1bd..058177719 100644 .PP \fIwifi\&.generate\-mac\-address\-mask\fR -- -2.17.0 +2.21.0 diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec index 1944a869..a947403e 100644 --- a/SPECS/NetworkManager.spec +++ b/SPECS/NetworkManager.spec @@ -8,9 +8,9 @@ %global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad) %global epoch_version 1 -%global rpm_version 1.18.0 -%global real_version 1.18.0 -%global release_version 5 +%global rpm_version 1.18.4 +%global real_version 1.18.4 +%global release_version 3 %global snapshot %{nil} %global git_sha %{nil} @@ -32,8 +32,7 @@ %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 real_version_major 1.18 +%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 systemd_units NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service @@ -67,7 +66,7 @@ %else %bcond_with connectivity_fedora %endif -%if 0%{?rhel} && 0%{?rhel} > 7 +%if 0%{?rhel} && 0%{?rhel} >= 7 %bcond_without connectivity_redhat %else %bcond_with connectivity_redhat @@ -117,7 +116,7 @@ %endif %if 0%{?fedora} -# Altough eBPF would be available on Fedora's kernel, it seems +# Although eBPF would be available on Fedora's kernel, it seems # we often get SELinux denials (rh#1651654). But even aside them, # bpf(BPF_MAP_CREATE, ...) randomly fails with EPERM. That might # be related to `ulimit -l`. Anyway, this is not usable at the @@ -133,7 +132,7 @@ Name: NetworkManager Summary: Network connection manager and user applications Epoch: %{epoch_version} Version: %{rpm_version} -Release: %{release_version}%{?snap}%{?dist}.1 +Release: %{release_version}%{?snap}%{?dist} Group: System Environment/Base License: GPLv2+ URL: http://www.gnome.org/projects/NetworkManager/ @@ -143,7 +142,7 @@ Source1: NetworkManager.conf Source2: 00-server.conf Source3: 10-slaves-order.conf Source4: 20-connectivity-fedora.conf -Source5: 20-connectivity-redhat.conf +Source5: 20-connectivity-powerel.conf # Patches numbering convention: # 0001 - 0999 : RHEL downstream patches that change behavior from upstream. @@ -161,20 +160,9 @@ Patch5: 0005-dhcp-internal-default-client-id-rh1695723.patch Patch6: 0006-no-keyfile-file-name-extension-rh1697858.patch # Bugfixes -Patch1000: 1000-cli-hide-certificate-blobs-rh1702199.patch -Patch1001: 1001-device-fix-reapply-of-MTU-rh1702657.patch -Patch1002: 1002-settings-fix-failed-assertion-rh1707261.patch -Patch1003: 1003-sw-devices-managed-after-wake-rh1701585.patch -Patch1004: 1004-device-restore-ipv6-config-on-link-up-rh1548237.patch -Patch1005: 1005-load-connection-dbus-fixes-rh1708660.patch -Patch1006: 1006-fix-file-permissions-secret-key-rh1709849.patch -Patch1007: 1007-tc-update-rh1546802.patch -Patch1008: 1008-don-t-kill-teamd-for-external-devices-rh1711952.patch -Patch1009: 1009-ifcfg-rh-use-PKCS12-private-as-client-cert-rh1714610.patch -Patch1010: 1010-translations-rh1689962.patch -Patch1011: 1011-cli-editor-no-wait-on-failure-rh1702203.patch -Patch1012: 1012-team-fix-validate-send-always-flags-rh1720153.patch -Patch1013: 1013-ovs-slaves-restart-fixes-rh1733709.patch +Patch1000: 1000-dhclient-include-conditionals-rh1758550.patch +Patch1001: 1001-fix-arp-announcements-rh1767681.patch +Patch1002: 1002-ovs-cloned-mac-rh1740557.patch # The pregenerated docs contain default values and paths that depend # on the configure options when creating the source tarball. @@ -361,6 +349,7 @@ Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %if %{with iwd} && (0%{?fedora} > 24 || 0%{?rhel} > 7) Requires: (wpa_supplicant >= %{wpa_supplicant_version} or iwd) +Suggests: wpa_supplicant %else # Just require wpa_supplicant on platforms that don't support boolean # dependencies even though the plugin supports both supplicant and @@ -491,15 +480,15 @@ via Fedora infrastructure. %if %{with connectivity_redhat} -%package config-connectivity-redhat -Summary: NetworkManager config file for connectivity checking via Red Hat servers +%package config-connectivity-powerel +Summary: NetworkManager config file for connectivity checking via PowerEL servers Group: System Environment/Base BuildArch: noarch Provides: NetworkManager-config-connectivity = %{epoch}:%{version}-%{release} -%description config-connectivity-redhat +%description config-connectivity-powerel This adds a NetworkManager configuration file to enable connectivity checking -via Red Hat infrastructure. +via PowerEL infrastructure. %endif @@ -549,10 +538,6 @@ by nm-connection-editor and nm-applet in a non-graphical environment. %prep %autosetup -p1 -n NetworkManager-%{real_version} -# On RHEL 7 patch creates backup files if the match is not clean. -# Fixed in later RPM versions. -find -name '*.orig' -delete - %build %if %{with meson} @@ -1078,10 +1063,10 @@ fi %if %{with connectivity_redhat} -%files config-connectivity-redhat +%files config-connectivity-powerel %dir %{nmlibdir} %dir %{nmlibdir}/conf.d -%{nmlibdir}/conf.d/20-connectivity-redhat.conf +%{nmlibdir}/conf.d/20-connectivity-powerel.conf %endif @@ -1108,8 +1093,26 @@ fi %changelog -* Thu Aug 1 2019 Beniamino Galvani - 1:1.18.0-5.1 -* core: fix activation of ovs slaves after a service restart (rh #1733709) +* Mon Jan 13 2020 Beniamino Galvani - 1:1.18.4-3 +- ovs: allow changing mac address of bridges and interfaces (rh #1740557) + +* Thu Nov 7 2019 Beniamino Galvani - 1:1.18.4-2 +- dhcp: include conditionals from existing dhclient configuration (rh #1758550) +- core: fix sending ARP announcements (rh #1767681) + +* Wed Oct 9 2019 Thomas Haller - 1:1.18.4-1 +- Update to 1.18.4 release +- cli: fix bash completion for slave-types (rh #1654062) +- core: improve handling of policy routing rules when restarting daemon (rh #1696881) +- ifcfg-rh: preserve existance of ethernet setting in profile (rh #1703960) +- tui: only add bond options to profile that are supported by tui (rh #1715720) +- cli: fix resetting default value for properties (rh #1715887) +- core: fix detecting parent device by connection's UUID (rh #1716438) +- core: fix setting IPv6 route options and destination (rh #1727193) +- core: support more "arp_validate" bond options (rh #1730793) + +* Thu Aug 1 2019 Beniamino Galvani - 1:1.18.0-6 +- core: fix activation of ovs slaves after a service restart (rh #1733709) * Wed Jun 26 2019 Lubomir Rintel - 1:1.18.0-5 - po: update translations (rh #1689962)