summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-02-18 18:23:40 +0100
committerThomas Haller <thaller@redhat.com>2021-02-18 18:23:42 +0100
commit2c1f8e9108a33eb3819b1bda1138a01bfd71746a (patch)
treeabdaf0c7b02419d5395dd59ccabe4e3748583e5c
parentfc29a96097e0f11ab963c27036b6b8b3e1f3d42b (diff)
parent1a1606186c2a835f738d408155378eba4e5e4169 (diff)
release: bump version to 1.31.1 (development)1.31.1-dev
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am7
-rw-r--r--NEWS10
-rw-r--r--clients/cli/generate-docs-nm-settings-nmcli.xml.in2
-rw-r--r--clients/common/meson.build23
-rw-r--r--clients/common/settings-docs.h.in2
-rw-r--r--configure.ac4
-rw-r--r--contrib/fedora/rpm/NetworkManager.spec6
-rwxr-xr-xcontrib/fedora/rpm/release.sh2
-rw-r--r--data/NetworkManager.service.in2
-rw-r--r--data/org.freedesktop.NetworkManager.policy.in.in2
-rw-r--r--libnm-core/nm-setting-ip4-config.c7
-rw-r--r--meson.build2
-rw-r--r--src/core/initrd/nmi-cmdline-reader.c37
14 files changed, 64 insertions, 43 deletions
diff --git a/.gitignore b/.gitignore
index 3524f7082e..2b49984ac7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -72,6 +72,7 @@ test-*.trs
/clients/cloud-setup/nm-cloud-setup
/clients/cloud-setup/nm-cloud-setup.service
/clients/cloud-setup/tests/test-cloud-setup-general
+/clients/common/settings-docs-input.xml
/clients/common/settings-docs.h
/clients/common/tests/test-clients-common
/clients/common/tests/test-libnm-core-aux
diff --git a/Makefile.am b/Makefile.am
index 9279672c1f..9e35298b3d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1731,6 +1731,9 @@ libnm/nm-settings-docs-gir.xml: tools/generate-docs-nm-settings-docs-gir.py libn
man/nm-settings-docs-nmcli.xml: clients/cli/generate-docs-nm-settings-nmcli.xml libnm/nm-property-infos-nmcli.xml libnm/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py man/common.ent
$(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py --only-from-first $@ $(wordlist 1,3,$^)
+clients/common/settings-docs-input.xml: libnm/nm-property-infos-nmcli.xml libnm/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py
+ $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,2,$^)
+
man/nm-settings-docs-%.xml: libnm/nm-property-infos-%.xml libnm/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py man/common.ent
$(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py $@ $(wordlist 1,2,$^)
@@ -4554,7 +4557,7 @@ $(clients_common_libnmc_base_la_OBJECTS): clients/common/.dirstamp
clients_common_settings_doc_h = clients/common/settings-docs.h
if BUILD_DOCS
-$(clients_common_settings_doc_h): clients/common/settings-docs.xsl libnm/nm-settings-docs-gir.xml clients/common/.dirstamp
+$(clients_common_settings_doc_h): clients/common/settings-docs.xsl clients/common/settings-docs-input.xml clients/common/.dirstamp
$(AM_V_GEN) $(XSLTPROC) --output $@ $< $(word 2,$^)
DISTCLEANFILES += $(clients_common_settings_doc_h)
check-local-settings-docs: $(clients_common_settings_doc_h)
@@ -5475,6 +5478,8 @@ CLEANFILES += \
\
$(NULL)
+CLEANFILES += clients/common/settings-docs-input.xml
+
###############################################################################
include Makefile.examples
diff --git a/NEWS b/NEWS
index f65738e505..4d54d111b1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,14 @@
=============================================
+NetworkManager-1.32
+Overview of changes since NetworkManager-1.30
+=============================================
+
+This is a snapshot of NetworkManager 1.30 development series.
+The API is subject to change and not guaranteed to be compatible
+with the later release.
+USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
+
+=============================================
NetworkManager-1.30
Overview of changes since NetworkManager-1.28
=============================================
diff --git a/clients/cli/generate-docs-nm-settings-nmcli.xml.in b/clients/cli/generate-docs-nm-settings-nmcli.xml.in
index 1044ae0d38..5bae8ff9ef 100644
--- a/clients/cli/generate-docs-nm-settings-nmcli.xml.in
+++ b/clients/cli/generate-docs-nm-settings-nmcli.xml.in
@@ -642,7 +642,7 @@
description="DNS servers priority. The relative priority for DNS servers specified by this setting. A lower numerical value is better (higher priority). Negative values have the special effect of excluding other configurations with a greater numerical priority value; so in presence of at least one negative priority, only DNS servers from connections with the lowest priority value will be used. To avoid all DNS leaks, set the priority of the profile that should be used to the most negative value of all active connections profiles. Zero selects a globally configured default value. If the latter is missing or zero too, it defaults to 50 for VPNs (including WireGuard) and 100 for other connections. Note that the priority is to order DNS settings for multiple active connections. It does not disambiguate multiple DNS servers within the same connection profile. When multiple devices have configurations with the same priority, VPNs will be considered first, then devices with the best (lowest metric) default route and then all other devices. When using dns=default, servers with higher priority will be on top of resolv.conf. To prioritize a given server over another one within the same connection, just specify them in the desired order. Note that commonly the resolver tries name servers in /etc/resolv.conf in the order listed, proceeding with the next server in the list on failure. See for example the &quot;rotate&quot; option of the dns-options setting. If there are any negative DNS priorities, then only name servers from the devices with that lowest priority will be considered. When using a DNS resolver that supports Conditional Forwarding or Split DNS (with dns=dnsmasq or dns=systemd-resolved settings), each connection is used to query domains in its search list. The search domains determine which name servers to ask, and the DNS priority is used to prioritize name servers based on the domain. Queries for domains not present in any search list are routed through connections having the &apos;~.&apos; special wildcard domain, which is added automatically to connections with the default route (or can be added manually). When multiple connections specify the same domain, the one with the best priority (lowest numerical value) wins. If a sub domain is configured on another interface it will be accepted regardless the priority, unless parent domain on the other interface has a negative priority, which causes the sub domain to be shadowed. With Split DNS one can avoid undesired DNS leaks by properly configuring DNS priorities and the search domains, so that only name servers of the desired interface are configured." />
<property name="addresses"
alias="ip4"
- description="Array of IP addresses." />
+ description="A list of IPv4 addresses and their prefix length. Multiple addresses can be separated by comma. For example &quot;192.168.1.5/24, 10.1.0.5/24&quot;." />
<property name="gateway"
alias="gw4"
description="The gateway associated with this configuration. This is only meaningful if &quot;addresses&quot; is also set. The gateway&apos;s main purpose is to control the next hop of the standard default route on the device. Hence, the gateway property conflicts with &quot;never-default&quot; and will be automatically dropped if the IP configuration is set to never-default. As an alternative to set the gateway, configure a static default route with /0 as prefix length." />
diff --git a/clients/common/meson.build b/clients/common/meson.build
index bf591b539d..6b91f36ff0 100644
--- a/clients/common/meson.build
+++ b/clients/common/meson.build
@@ -29,19 +29,26 @@ libnmc_base_dep = declare_dependency(
)
if enable_docs
- settings_docs_source = custom_target(
- 'settings-docs.h',
- input: nm_settings_docs_xml_gir,
- output: 'settings-docs.h',
+ settings_docs_input_xml = custom_target(
+ 'settings-docs-input.xml',
+ input: [nm_settings_docs_xml_gir, nm_property_infos_xml['nmcli']],
+ output: 'settings-docs-input.xml',
command: [
- xsltproc,
- '--output',
+ python.path(),
+ join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'),
'@OUTPUT@',
- join_paths(meson.current_source_dir(), 'settings-docs.xsl'),
- '@INPUT@',
+ nm_property_infos_xml['nmcli'],
+ nm_settings_docs_xml_gir,
],
)
+ settings_docs_source = custom_target(
+ 'settings-docs.h',
+ input: settings_docs_input_xml,
+ output: 'settings-docs.h',
+ command: [xsltproc, '--output', '@OUTPUT@', join_paths(meson.current_source_dir(), 'settings-docs.xsl'), '@INPUT@'],
+ )
+
test(
'check-settings-docs',
find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')),
diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in
index 2c275a99c8..9cd2609d23 100644
--- a/clients/common/settings-docs.h.in
+++ b/clients/common/settings-docs.h.in
@@ -225,7 +225,7 @@
#define DESCRIBE_DOC_NM_SETTING_IP_TUNNEL_REMOTE N_("The remote endpoint of the tunnel; the value must contain an IPv4 or IPv6 address.")
#define DESCRIBE_DOC_NM_SETTING_IP_TUNNEL_TOS N_("The type of service (IPv4) or traffic class (IPv6) field to be set on tunneled packets.")
#define DESCRIBE_DOC_NM_SETTING_IP_TUNNEL_TTL N_("The TTL to assign to tunneled packets. 0 is a special value meaning that packets inherit the TTL value.")
-#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES N_("Array of IP addresses.")
+#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES N_("A list of IPv4 addresses and their prefix length. Multiple addresses can be separated by comma. For example \"192.168.1.5/24, 10.1.0.5/24\".")
#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DAD_TIMEOUT N_("Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network. If an address conflict is detected, the activation will fail. A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero). A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4.")
#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID N_("A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string ('aa:bb:cc') it is interpreted as a binary client ID, in which case the first byte is assumed to be the 'type' field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the 'type' field is set to 0. The special values \"mac\" and \"perm-mac\" are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet (01). Currently, these options only work for ethernet type of links. The special value \"ipv6-duid\" uses the DUID from \"ipv6.dhcp-duid\" property as an RFC4361-compliant client identifier. As IAID it uses \"ipv4.dhcp-iaid\" and falls back to \"ipv6.dhcp-iaid\" if unset. The special value \"duid\" generates a RFC4361-compliant client identifier based on \"ipv4.dhcp-iaid\" and uses a DUID generated by hashing /etc/machine-id. The special value \"stable\" is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If you set the stable-id, you may want to include the \"${DEVICE}\" or \"${MAC}\" specifier to get a per-device key. If unset, a globally configured default is used. If still unset, the default depends on the DHCP plugin.")
#define DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_FQDN N_("If the \"dhcp-send-hostname\" property is TRUE, then the specified FQDN will be sent to the DHCP server when acquiring a lease. This property and \"dhcp-hostname\" are mutually exclusive and cannot be set at the same time.")
diff --git a/configure.ac b/configure.ac
index 3e660ff7e1..86ab9c6a5c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,8 +7,8 @@ dnl - add corresponding NM_VERSION_x_y_z macros in
dnl "shared/nm-version-macros.h.in"
dnl - update number in meson.build
m4_define([nm_major_version], [1])
-m4_define([nm_minor_version], [30])
-m4_define([nm_micro_version], [0])
+m4_define([nm_minor_version], [31])
+m4_define([nm_micro_version], [1])
m4_define([nm_version],
[nm_major_version.nm_minor_version.nm_micro_version])
diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec
index f9bf4802c1..ce6cb41397 100644
--- a/contrib/fedora/rpm/NetworkManager.spec
+++ b/contrib/fedora/rpm/NetworkManager.spec
@@ -55,12 +55,8 @@
%if "x__BCOND_DEFAULT_TEST__" == "x1" || "x__BCOND_DEFAULT_TEST__" == "x0"
%global bcond_default_test __BCOND_DEFAULT_TEST__
%else
-%if 0%{?rhel} >= 9
-%global bcond_default_test 1
-%else
%global bcond_default_test 0
%endif
-%endif
%bcond_with meson
%bcond_without adsl
@@ -180,7 +176,7 @@ Version: %{rpm_version}
Release: %{release_version}%{?snap}%{?dist}
Group: System Environment/Base
License: GPLv2+ and LGPLv2+
-URL: http://www.gnome.org/projects/NetworkManager/
+URL: https://networkmanager.dev/
#Source: https://download.gnome.org/sources/NetworkManager/%{real_version_major}/%{name}-%{real_version}.tar.xz
Source: __SOURCE1__
diff --git a/contrib/fedora/rpm/release.sh b/contrib/fedora/rpm/release.sh
index b91dfe541f..c07a8c2846 100755
--- a/contrib/fedora/rpm/release.sh
+++ b/contrib/fedora/rpm/release.sh
@@ -266,7 +266,7 @@ if [ "$CUR_BRANCH" = master ]; then
number_is_odd "${VERSION_ARR[1]}" || die "Unexpected version number on master. Should be an odd development version"
[ "$RELEASE_MODE" = devel -o "$RELEASE_MODE" = rc1 -o "$RELEASE_MODE" = major-post ] || die "Unexpected branch name \"$CUR_BRANCH\" for \"$RELEASE_MODE\""
else
- re='^nm-[0-9][1-9]*-[0-9][1-9]*$'
+ re='^nm-[0-9]+-[0-9]+$'
[[ "$CUR_BRANCH" =~ $re ]] || die "Unexpected current branch $CUR_BRANCH. Should be master or nm-?-??"
if number_is_odd "${VERSION_ARR[1]}"; then
# we are on a release candiate branch.
diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
index 91ebd9a36e..6aaaed78ba 100644
--- a/data/NetworkManager.service.in
+++ b/data/NetworkManager.service.in
@@ -14,6 +14,8 @@ ExecStart=@sbindir@/NetworkManager --no-daemon
Restart=on-failure
# NM doesn't want systemd to kill its children for it
KillMode=process
+
+# CAP_DAC_OVERRIDE: required to open /run/openvswitch/db.sock socket.
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
ProtectSystem=true
diff --git a/data/org.freedesktop.NetworkManager.policy.in.in b/data/org.freedesktop.NetworkManager.policy.in.in
index 8b6ea5155e..8d46dac735 100644
--- a/data/org.freedesktop.NetworkManager.policy.in.in
+++ b/data/org.freedesktop.NetworkManager.policy.in.in
@@ -6,7 +6,7 @@
<policyconfig>
<vendor>NetworkManager</vendor>
- <vendor_url>http://www.gnome.org/projects/NetworkManager</vendor_url>
+ <vendor_url>https://networkmanager.dev/</vendor_url>
<icon_name>nm-icon</icon_name>
<action id="org.freedesktop.NetworkManager.enable-disable-network">
diff --git a/libnm-core/nm-setting-ip4-config.c b/libnm-core/nm-setting-ip4-config.c
index 20fbc017bc..4e5ff0f471 100644
--- a/libnm-core/nm-setting-ip4-config.c
+++ b/libnm-core/nm-setting-ip4-config.c
@@ -946,6 +946,13 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
* for that subnet.
* ---end---
*/
+ /* ---nmcli---
+ * property: addresses
+ * format: a comma separated list of addresses
+ * description: A list of IPv4 addresses and their prefix length. Multiple addresses
+ * can be separated by comma. For example "192.168.1.5/24, 10.1.0.5/24".
+ * ---end---
+ */
_nm_properties_override_gobj(
properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ADDRESSES),
diff --git a/meson.build b/meson.build
index 9fcb2f6e7a..4adcf0fec7 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project(
# - add corresponding NM_VERSION_x_y_z macros in
# "shared/nm-version-macros.h.in"
# - update number in configure.ac
- version: '1.30.0',
+ version: '1.31.1',
license: 'GPL2+',
default_options: [
'buildtype=debugoptimized',
diff --git a/src/core/initrd/nmi-cmdline-reader.c b/src/core/initrd/nmi-cmdline-reader.c
index 508ef2b25c..1a95e4f7dd 100644
--- a/src/core/initrd/nmi-cmdline-reader.c
+++ b/src/core/initrd/nmi-cmdline-reader.c
@@ -410,10 +410,12 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument)
int client_ip_family = AF_UNSPEC;
int client_ip_prefix = -1;
const char * dns[2] = {
- 0,
+ NULL,
+ NULL,
};
int dns_addr_family[2] = {
- 0,
+ AF_UNSPEC,
+ AF_UNSPEC,
};
int i;
GError *error = NULL;
@@ -471,11 +473,15 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument)
tmp = get_word(&argument, ':');
dns_addr_family[0] = get_ip_address_family(tmp, FALSE);
if (dns_addr_family[0] != AF_UNSPEC) {
- dns[0] = tmp;
- dns[1] = get_word(&argument, ':');
- dns_addr_family[1] = get_ip_address_family(dns[1], FALSE);
- if (*argument)
- _LOGW(LOGD_CORE, "Ignoring extra: '%s'.", argument);
+ dns[0] = tmp;
+ dns[1] = get_word(&argument, ':');
+ if (dns[1]) {
+ dns_addr_family[1] = get_ip_address_family(dns[1], FALSE);
+ if (dns_addr_family[1] == AF_UNSPEC)
+ _LOGW(LOGD_CORE, "Ignoring invalid DNS server: '%s'.", dns[1]);
+ if (*argument)
+ _LOGW(LOGD_CORE, "Ignoring extra: '%s'.", argument);
+ }
} else {
mtu = tmp;
macaddr = argument;
@@ -685,21 +691,8 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument)
for (i = 0; i < 2; i++) {
if (dns_addr_family[i] == AF_UNSPEC)
break;
- if (nm_utils_ipaddr_is_valid(dns_addr_family[i], dns[i])) {
- switch (dns_addr_family[i]) {
- case AF_INET:
- nm_setting_ip_config_add_dns(s_ip4, dns[i]);
- break;
- case AF_INET6:
- nm_setting_ip_config_add_dns(s_ip6, dns[i]);
- break;
- default:
- _LOGW(LOGD_CORE, "Unknown address family: %s", dns[i]);
- break;
- }
- } else {
- _LOGW(LOGD_CORE, "Invalid name server: %s", dns[i]);
- }
+ nm_assert(nm_utils_ipaddr_is_valid(dns_addr_family[i], dns[i]));
+ nm_setting_ip_config_add_dns(NM_IS_IPv4(dns_addr_family[i]) ? s_ip4 : s_ip6, dns[i]);
}
if (mtu && *mtu)