From 537bfce2bda471c92caabd388589230200891509 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 3 Jul 2026 19:53:18 +0200 Subject: New upstream version 1.58~rc1 --- contrib/alpine/REQUIRED_PACKAGES | 3 +- contrib/debian/REQUIRED_PACKAGES | 11 +++++ contrib/fedora/REQUIRED_PACKAGES | 3 +- contrib/fedora/rpm/24-clat-auto.conf | 32 ++++++++++++++ contrib/fedora/rpm/NetworkManager.spec | 67 ++++++++++++++++++++---------- contrib/fedora/rpm/build.sh | 2 + contrib/fedora/rpm/build_clean.sh | 1 - contrib/fedora/rpm/configure-for-system.sh | 24 ++++++----- contrib/scripts/nm-ci-run.sh | 12 +++++- contrib/scripts/nm-copr-build.sh | 10 +++-- 10 files changed, 125 insertions(+), 40 deletions(-) create mode 100644 contrib/fedora/rpm/24-clat-auto.conf (limited to 'contrib') diff --git a/contrib/alpine/REQUIRED_PACKAGES b/contrib/alpine/REQUIRED_PACKAGES index 3a3cc1ab..d263d87f 100755 --- a/contrib/alpine/REQUIRED_PACKAGES +++ b/contrib/alpine/REQUIRED_PACKAGES @@ -8,6 +8,7 @@ apk add \ 'alpine-sdk' \ 'autoconf' \ 'bash' \ + 'bpftool' \ 'clang' \ 'curl-dev' \ 'dbus' \ @@ -23,12 +24,12 @@ apk add \ 'iproute2' \ 'iptables' \ 'jansson-dev' \ + 'libbpf-dev' \ 'libgudev-dev' \ 'libndp-dev' \ 'libnvme-dev' \ 'libnl3-dev' \ 'libpsl-dev' \ - 'libsoup-dev' \ 'libteam-dev' \ 'linux-headers' \ 'meson' \ diff --git a/contrib/debian/REQUIRED_PACKAGES b/contrib/debian/REQUIRED_PACKAGES index 68f62570..a4fb8985 100755 --- a/contrib/debian/REQUIRED_PACKAGES +++ b/contrib/debian/REQUIRED_PACKAGES @@ -43,6 +43,7 @@ install \ iproute2 \ iptables \ libaudit-dev \ + libbpf-dev \ libcurl4-gnutls-dev \ libdbus-1-dev \ libgirepository1.0-dev \ @@ -80,6 +81,16 @@ install \ \ #end +# bpftool is a virtual package on Ubuntu 22.04 and 24.04 (provided by +# linux-tools-*), with no install candidate. Install it where a candidate +# exists (Debian, Fedora, Ubuntu 25.04+) and skip it otherwise. It only +# builds the CLAT skeleton, and CLAT needs libndp >= 1.9, which those images +# lack (they ship 1.8), so their builds run with clat off and never use it. +install_ignore_missing \ + bpftool \ + \ + #end + install_ignore_missing \ python-setuptools \ policykit-1 \ diff --git a/contrib/fedora/REQUIRED_PACKAGES b/contrib/fedora/REQUIRED_PACKAGES index 6f70537d..48650202 100755 --- a/contrib/fedora/REQUIRED_PACKAGES +++ b/contrib/fedora/REQUIRED_PACKAGES @@ -49,6 +49,7 @@ install \ ModemManager-glib-devel \ audit-libs-devel \ bluez-libs-devel \ + bpftool \ clang \ dbus-devel \ dbus-x11 \ @@ -64,6 +65,7 @@ install \ iptables \ jansson-devel \ jq \ + libbpf-devel \ libcurl-devel \ libndp-devel \ libnvme-devel \ @@ -91,7 +93,6 @@ install \ # some packages don't exist in certain distributions. Install them one-by-one, and ignore errors. install_ignore_missing \ black \ - dhclient \ iproute-tc \ libasan \ libpsl-devel \ diff --git a/contrib/fedora/rpm/24-clat-auto.conf b/contrib/fedora/rpm/24-clat-auto.conf new file mode 100644 index 00000000..668ec04e --- /dev/null +++ b/contrib/fedora/rpm/24-clat-auto.conf @@ -0,0 +1,32 @@ +# CLAT implements the client part of 464XLAT (RFC 6877), an +# architecture that provides IPv4 connectivity to hosts on IPv6-only +# networks. +# +# The default value for the connection property 'ipv4.clat' is still +# 'no'. Change it globally to 'auto' (1) so that CLAT gets enabled +# automatically when the network advertises a PREF64 and there is no +# native IPv4 configured (either because DHCPv4 option 108 was +# received or because there is no DHCPv4 server). +# +# See: https://fedoraproject.org/wiki/Changes/IPv6-Mostly_Support_In_NetworkManager + +# Do not modify this file. You can hide/overwrite this file by +# creating "/etc/NetworkManager/conf.d/24-clat-auto.conf". You can +# also add configuration snippets with higher priority that override +# this setting (see `man 5 NetworkManager.conf`). Most importantly, +# this snippet only sets default values for the profile. You can +# explicitly set the value for each profile, so that this default +# value is not used. + +# For example, on a particular profile/network set +# +# $ nmcli connection modify "$PROFILE" ipv4.clat no +# +# to disable CLAT. This prevents the default from this file to take +# effect. + +[connection-24-clat-auto] +ipv4.clat=1 + +[.config] +enable=nm-version-min:1.57 diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 73ab88f3..c7521bff 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -42,11 +42,6 @@ Release: __RELEASE_VERSION__%{?dist} %global systemd_units_cloud_setup nm-cloud-setup.service nm-cloud-setup.timer ############################################################################### -%if 0%{?fedora} > 40 || 0%{?rhel} >= 10 -%bcond_with dhclient -%else -%bcond_without dhclient -%endif %bcond_without adsl %bcond_without bluetooth %bcond_without wwan @@ -100,7 +95,13 @@ Release: __RELEASE_VERSION__%{?dist} %else %bcond_without iwd %endif - +%bcond_without polkit_noauth_group +%ifarch %{ix86} +# there is no bpftool in i686 +%bcond_with clat +%else +%bcond_without clat +%endif ############################################################################### %global dbus_version 1.9.18 @@ -164,21 +165,21 @@ Source6: 22-wifi-mac-addr.conf Source7: 70-nm-connectivity.conf Source8: readme-ifcfg-rh.txt Source9: readme-ifcfg-rh-migrated.txt +Source10: 24-clat-auto.conf #Patch1: 0001-some.patch Requires(post): systemd -Requires(post): systemd-udev -Requires(post): /usr/sbin/update-alternatives Requires(preun): systemd -Requires(preun): /usr/sbin/update-alternatives Requires(postun): systemd Requires: dbus >= %{dbus_version} Requires: glib2 >= %{glib2_version} Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release} -Recommends: iputils +%if %{with clat} +Requires: libbpf +%endif %if 0%{?rhel} == 8 # Older libndp versions use select() (rh#1933041). On well known distros, @@ -227,6 +228,7 @@ Conflicts: NetworkManager-dispatcher-routing-rules <= 1:1.47.5-3 %endif BuildRequires: gcc +BuildRequires: clang BuildRequires: pkgconfig BuildRequires: meson BuildRequires: gettext-devel >= 0.19.8 @@ -281,6 +283,10 @@ BuildRequires: firewalld-filesystem BuildRequires: iproute BuildRequires: iproute-tc BuildRequires: libnvme-devel >= 1.5 +%if %{with clat} +BuildRequires: libbpf-devel +BuildRequires: bpftool +%endif Provides: %{name}-dispatcher%{?_isa} = %{epoch}:%{version}-%{release} @@ -549,6 +555,8 @@ Group: System Environment/Base BuildArch: noarch Requires: NetworkManager Requires: /usr/bin/nmcli +Requires(post): /usr/sbin/update-alternatives +Requires(preun): /usr/sbin/update-alternatives Obsoletes: NetworkManager < %{obsoletes_initscripts_updown} %description initscripts-updown @@ -572,11 +580,6 @@ Preferably use nmcli instead. -Dnft=%{_sbindir}/nft \ -Diptables=%{_sbindir}/iptables \ -Dip6tables=%{_sbindir}/ip6tables \ -%if %{with dhclient} - -Ddhclient=%{_sbindir}/dhclient \ -%else - -Ddhclient=no \ -%endif -Ddhcpcd=no \ -Dcrypto=gnutls \ %if %{with debug} @@ -600,19 +603,20 @@ Preferably use nmcli instead. %endif %if %{with wifi} -Dwifi=true \ -%if 0%{?fedora} - -Dwext=true \ -%else - -Dwext=false \ -%endif %else -Dwifi=false \ %endif + -Dwext=false \ %if %{with iwd} -Diwd=true \ %else -Diwd=false \ %endif +%if %{with clat} + -Dclat=true \ +%else + -Dclat=false \ +%endif %if %{with bluetooth} -Dbluez5_dun=true \ %else @@ -649,7 +653,9 @@ Preferably use nmcli instead. -Dselinux=true \ -Dpolkit=true \ -Dconfig_auth_polkit_default=true \ - -Dmodify_system=true \ +%if %{with polkit_noauth_group} + -Dpolkit_noauth_group=wheel \ +%endif -Dconcheck=true \ %if 0%{?fedora} -Dlibpsl=true \ @@ -659,6 +665,7 @@ Preferably use nmcli instead. -Dsession_tracking=systemd \ -Dsuspend_resume=systemd \ -Dsystemdsystemunitdir=%{_unitdir} \ + -Dsystemdsystemgeneratordir=%{_systemdgeneratordir} \ -Dsystem_ca_path=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem \ -Ddbus_conf_dir=%{dbus_sys_dir} \ -Dtests=yes \ @@ -710,6 +717,9 @@ cp %{SOURCE7} %{buildroot}%{_sysctldir} %if 0%{?fedora} >= 40 cp %{SOURCE6} %{buildroot}%{nmlibdir}/conf.d/ %endif +%if 0%{?fedora} >= 45 +cp %{SOURCE10} %{buildroot}%{nmlibdir}/conf.d/ +%endif %if %{with ifcfg_warning} cp %{SOURCE8} %{buildroot}%{_sysconfdir}/sysconfig/network-scripts @@ -731,6 +741,7 @@ rm -f %{buildroot}%{_libdir}/pppd/%{ppp_version}/*.la rm -f %{buildroot}%{nmplugindir}/*.la # Don't use the *-initrd.service files yet, wait dracut to support them +rm -f %{buildroot}%{_systemdgeneratordir}/nm-initrd-generator.sh rm -f %{buildroot}%{_unitdir}/NetworkManager-config-initrd.service rm -f %{buildroot}%{_unitdir}/NetworkManager-initrd.service rm -f %{buildroot}%{_unitdir}/NetworkManager-wait-online-initrd.service @@ -822,8 +833,12 @@ fi %postun -/usr/bin/udevadm control --reload-rules || : -/usr/bin/udevadm trigger --subsystem-match=net || : +# skip triggering if udevd isn't even accessible, e.g. containers or +# rpm-ostree-based systems +if [ -S /run/udev/control ]; then + /usr/bin/udevadm control --reload-rules || : + /usr/bin/udevadm trigger --subsystem-match=net || : +fi %firewalld_reload %systemd_postun %{systemd_units} @@ -858,6 +873,9 @@ fi %if 0%{?fedora} >= 40 %{nmlibdir}/conf.d/22-wifi-mac-addr.conf %endif +%if 0%{?fedora} >= 45 +%{nmlibdir}/conf.d/24-clat-auto.conf +%endif %ghost %{_sysconfdir}/%{name}/VPN %{_bindir}/nm-online %{_libexecdir}/nm-dhcp-helper @@ -896,6 +914,9 @@ fi %{_datadir}/dbus-1/system-services/org.freedesktop.nm_dispatcher.service %{_datadir}/dbus-1/system-services/org.freedesktop.nm_priv_helper.service %{_datadir}/polkit-1/actions/*.policy +%if %{with polkit_noauth_group} +%{_datadir}/polkit-1/rules.d/org.freedesktop.NetworkManager.rules +%endif %{_prefix}/lib/udev/rules.d/*.rules %{_prefix}/lib/firewalld/zones/nm-shared.xml # systemd stuff diff --git a/contrib/fedora/rpm/build.sh b/contrib/fedora/rpm/build.sh index 10180587..9f988b65 100755 --- a/contrib/fedora/rpm/build.sh +++ b/contrib/fedora/rpm/build.sh @@ -143,6 +143,7 @@ SOURCE_CONFIG_WIFI_MAC_ADDR="$(abs_path "$SOURCE_CONFIG_WIFI_MAC_ADDR" "$SCRIPTD SOURCE_SYSCTL_RP_FILTER_REDHAT="$(abs_path "$SOURCE_SYSCTL_RP_FILTER_REDHAT" "$SCRIPTDIR/70-nm-connectivity.conf")" || die "invalid \$SOURCE_SYSCTL_RP_FILTER_REDHAT argument" SOURCE_README_IFCFG_FILES="$(abs_path "$SOURCE_README_IFCFG_FILES" "$SCRIPTDIR/readme-ifcfg-rh.txt")" || die "invalid \$SOURCE_README_IFCFG_FILES argument" SOURCE_README_IFCFG_MIGRATED="$(abs_path "$SOURCE_README_IFCFG_MIGRATED" "$SCRIPTDIR/readme-ifcfg-rh-migrated.txt")" || die "invalid \$SOURCE_README_IFCFG_MIGRATED argument" +SOURCE_CONFIG_CLAT_AUTO="$(abs_path "$SOURCE_CONFIG_CLAT_AUTO" "$SCRIPTDIR/24-clat-auto.conf")" || die "invalid \$SOURCE_CONFIG_CLAT_AUTO argument" TEMP="$(mktemp -d "$SCRIPTDIR/NetworkManager.$DATE.XXXXXX")" TEMPBASE="$(basename "$TEMP")" @@ -202,6 +203,7 @@ cp "$SOURCE_CONFIG_WIFI_MAC_ADDR" "$TEMP/SOURCES/22-wifi-mac-addr.conf" || die " cp "$SOURCE_SYSCTL_RP_FILTER_REDHAT" "$TEMP/SOURCES/70-nm-connectivity.conf" || die "Could not copy source $SOURCE_SYSCTL_RP_FILTER_REDHAT to $TEMP/SOURCES" cp "$SOURCE_README_IFCFG_FILES" "$TEMP/SOURCES/readme-ifcfg-rh.txt" || die "Could not copy source $SOURCE_README_IFCFG_FILES to $TEMP/SOURCES" cp "$SOURCE_README_IFCFG_MIGRATED" "$TEMP/SOURCES/readme-ifcfg-rh-migrated.txt" || die "Could not copy source $SOURCE_README_IFCFG_MIGRATED to $TEMP/SOURCES" +cp "$SOURCE_CONFIG_CLAT_AUTO" "$TEMP/SOURCES/24-clat-auto.conf" || die "Could not copy source $SOURCE_CONFIG_CLAT_AUTO to $TEMP/SOURCES" write_changelog diff --git a/contrib/fedora/rpm/build_clean.sh b/contrib/fedora/rpm/build_clean.sh index 68599bda..4accc0d3 100755 --- a/contrib/fedora/rpm/build_clean.sh +++ b/contrib/fedora/rpm/build_clean.sh @@ -218,7 +218,6 @@ if [[ $NO_DIST != 1 ]]; then -Dlibaudit=yes-disabled-by-default \ -Dpolkit=true \ -Dnm_cloud_setup=true \ - -Ddhclient=/usr/sbin/dhclient \ -Dconfig_dhcp_default=internal \ -Dconfig_dns_rc_manager_default=auto \ -Diptables=/usr/sbin/iptables \ diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index 6bdf6682..066d7fc9 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -173,6 +173,7 @@ P_WIFI="${WIFI-1}" P_WWAN="${WWAN-1}" P_TEAM="${TEAM-1}" P_BLUETOOTH="${BLUETOOTH-1}" +P_IFCFG_RH="${IFCFG_RH-0}" P_NMTUI="${NMTUI-1}" P_NM_CLOUD_SETUP="${NM_CLOUD_SETUP-1}" P_OVS="${OVS-1}" @@ -202,7 +203,7 @@ if [ -z "$P_FEDORA" -a -z "$P_RHEL" ] ; then P_FEDORA="$x" P_RHEL=0 else - x="$(grep -q "ID=fedora" /etc/os-release && sed -n 's/VERSION_ID=//p' /etc/os-release)" + x="$(grep -q 'ID="rhel"' /etc/os-release && sed -n 's/^VERSION_ID="*\([0-9]*\).*/\1/p' /etc/os-release)" if test "$x" -gt 0 ; then P_FEDORA=0 P_RHEL="$x" @@ -262,11 +263,7 @@ if [ -z "$P_LOGGING_BACKEND_DEFAULT" ] ; then fi if [ -z "$P_DHCP_DEFAULT" ] ; then - if [ "$P_FEDORA" -ge 31 -o "$P_RHEL" -ge 8 ] ; then - P_DHCP_DEFAULT=internal - else - P_DHCP_DEFAULT=dhclient - fi + P_DHCP_DEFAULT=internal fi if [ -z "$P_FIREWALLD_ZONE" ] ; then @@ -293,6 +290,14 @@ if [ -z "$P_MODEM_MANAGER_1" ] ; then fi fi +if [ -z "$TEAM" ] && [ "${P_RHEL-0}" -ge 10 ] ; then + P_TEAM=0 +fi + +if [ -z "$IFCFG_RH" ] && [ -n "$P_RHEL" ] && [ "$P_RHEL" -le 9 ] ; then + P_IFCFG_RH=1 +fi + if bool "$P_DEBUG" ; then P_CFLAGS="-g -Og -fexceptions${P_CFLAGS:+ }$P_CFLAGS" else @@ -368,7 +373,6 @@ meson setup\ -Dnft="${D_SBINDIR}/nft" \ -Diptables="${D_SBINDIR}/iptables" \ -Dip6tables="${D_SBINDIR}/ip6tables" \ - -Ddhclient="${D_SBINDIR}/dhclient" \ -Ddhcpcd=no \ -Dconfig_dhcp_default="$P_DHCP_DEFAULT" \ "-Dcrypto=$P_CRYPTO" \ @@ -378,7 +382,7 @@ meson setup\ -Db_lto="$(bool_true "$P_LTO")" \ -Dlibaudit=yes-disabled-by-default \ -Dmodem_manager="$(bool_true "$P_MODEM_MANAGER_1")" \ - $(args_enable "$P_WIFI" -Dwifi=true -Dwext="$(bool_true "$P_FEDORA")") \ + $(args_enable "$P_WIFI" -Dwifi=true -Dwext=false) \ $(args_enable "$(bool_not_true "$P_WIFI")" -Dwifi=false ) \ -Diwd="$(bool_true "$P_IWD")" \ -Dbluez5_dun="$(bool_true "$P_BLUETOOTH")" \ @@ -392,17 +396,17 @@ meson setup\ -Dselinux=true \ -Dpolkit=true \ -Dconfig_auth_polkit_default=true \ - -Dmodify_system=true \ -Dconcheck=true \ -Dlibpsl="$(bool_true "$P_FEDORA")" \ -Dsession_tracking=systemd \ -Dsuspend_resume=systemd \ -Dsystemdsystemunitdir=/usr/lib/systemd/system \ + -Dsystemdsystemgeneratordir=/usr/lib/systemd/system-generators \ -Dsystem_ca_path=/etc/pki/tls/cert.pem \ -Ddbus_conf_dir="$P_DBUS_SYS_DIR" \ -Dtests=yes \ -Dvalgrind=no \ - -Difcfg_rh=true \ + -Difcfg_rh="$(bool_true "$P_IFCFG_RH")" \ -Difupdown=false \ $(args_enable "$P_PPP" -Dppp=true -Dpppd="$D_SBINDIR/pppd" -Dpppd_plugin_dir="$D_LIBDIR/pppd/$P_PPP_VERSION") \ $(args_enable "$(bool_not_true "$P_PPP")" -Dppp=false ) \ diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh index 57b867c5..49b31f6d 100755 --- a/contrib/scripts/nm-ci-run.sh +++ b/contrib/scripts/nm-ci-run.sh @@ -55,6 +55,7 @@ _WITH_LIBTEAM="true" _WITH_DOCS="true" _WITH_SYSTEMD_LOGIND="true" _WITH_NBFT="true" +_WITH_CLAT="true" if [ $IS_ALPINE = 1 ]; then _WITH_SYSTEMD_LOGIND="false" fi @@ -63,6 +64,14 @@ if ! pkgconf 'libnvme >= 1.5'; then _WITH_NBFT="false" fi +if ! pkgconf 'libndp >= 1.9'; then + _WITH_CLAT="false" +fi + +if ! pkgconf 'libbpf >= 1.3'; then + _WITH_CLAT="false" +fi + if [ -z "${NMTST_SEED_RAND+x}" ]; then NMTST_SEED_RAND="$SRANDOM" if [ -z "$NMTST_SEED_RAND" ]; then @@ -169,6 +178,7 @@ meson setup build \ -D ld_gc=false \ -D session_tracking=no \ -D systemdsystemunitdir=no \ + -D systemdsystemgeneratordir=no \ -D systemd_journal=false \ -D selinux=false \ -D libaudit=no \ @@ -184,7 +194,6 @@ meson setup build \ -D ofono=true \ -D teamdctl=$_WITH_LIBTEAM \ \ - -D dhclient=/bin/nowhere/dhclient \ -D dhcpcd=/bin/nowhere/dhcpd \ \ -D netconfig=/bin/nowhere/netconfig \ @@ -194,6 +203,7 @@ meson setup build \ -D ifupdown=true \ \ -D nbft=$_WITH_NBFT \ + -D clat=$_WITH_CLAT \ \ #end diff --git a/contrib/scripts/nm-copr-build.sh b/contrib/scripts/nm-copr-build.sh index 93dcc083..0fdfdf6c 100755 --- a/contrib/scripts/nm-copr-build.sh +++ b/contrib/scripts/nm-copr-build.sh @@ -74,9 +74,13 @@ get_nm_git_bundle() { fi mkdir nm-git-bundle pushd nm-git-bundle - time curl "$NM_GIT_BUNDLE" \ - | rpm2cpio - \ - | cpio -idmv + if ! time curl --fail -o nm-git-bundle.rpm "$NM_GIT_BUNDLE"; then + # The bundle is only a fetch speed-up; fall back to the git fetch below. + echo "nm-git-bundle unavailable at $NM_GIT_BUNDLE, falling back to upstream git fetch" >&2 + popd + return 0 + fi + rpm2cpio nm-git-bundle.rpm | cpio -idmv popd git remote add nm-git-bundle "$PWD/nm-git-bundle/usr/share/NetworkManager/nm-git-bundle.git" git fetch nm-git-bundle -- cgit 1.3.0-6-gf8a5