about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2023-10-17 23:18:14 +0200
committerMichael Biebl <biebl@debian.org>2023-10-18 14:23:37 +0200
commit0fbfebd3a199dde0407321adfa9ecde67af5dc92 (patch)
tree188992504496491676b8619c19c8b1d040405d41
parent7d36e835058da86a8a01bcce1aaa0b0d49f771b6 (diff)
Stop executing ifupdown hook scripts on network state changes
Many of those script are not meant to be run within a NetworkManager
context. Packages that would benefit from reacting on such network state
changes should install a native NetworkManager-dispatcher script.
The interface is documented in more detail in the
NetworkManager-dispatcher(8) man page.
-rwxr-xr-xdebian/01-ifupdown82
-rw-r--r--debian/NEWS16
-rw-r--r--debian/network-manager.install1
-rw-r--r--debian/network-manager.maintscript1
4 files changed, 17 insertions, 83 deletions
diff --git a/debian/01-ifupdown b/debian/01-ifupdown
deleted file mode 100755
index 5ac31f07..00000000
--- a/debian/01-ifupdown
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh -e
-# Script to dispatch NetworkManager events
-#
-# Runs ifupdown scripts when NetworkManager fiddles with interfaces.
-# See NetworkManager(8) for further documentation of the dispatcher events.
-
-# We do not handle connectivity-change events in ifupdown so simply exit at
-# this point
-if [ "$2" = "connectivity-change" ]; then
-    exit 0;
-fi
-
-if [ -z "$1" ]; then
-    echo "$0: called with no interface" 1>&2
-    exit 1;
-fi
-
-if [ -n "$IP4_NUM_ADDRESSES" ] && [ "$IP4_NUM_ADDRESSES" -gt 0 ]; then
-   ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet"
-fi
-if [ -n "$IP6_NUM_ADDRESSES" ] && [ "$IP6_NUM_ADDRESSES" -gt 0 ]; then
-   ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet6"
-fi
-
-# If we have a VPN connection ignore the underlying IP address(es)
-if [ "$2" = "vpn-up" ] || [ "$2" = "vpn-down" ]; then
-   ADDRESS_FAMILIES=""
-fi
-
-if [ -n "$VPN_IP4_NUM_ADDRESSES" ] && [ "$VPN_IP4_NUM_ADDRESSES" -gt 0 ]; then
-   ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet"
-fi
-if [ -n "$VPN_IP6_NUM_ADDRESSES" ] && [ "$VPN_IP6_NUM_ADDRESSES" -gt 0 ]; then
-   ADDRESS_FAMILIES="$ADDRESS_FAMILIES inet6"
-fi
-
-# We're probably bringing the interface down.
-[ -n "$ADDRESS_FAMILIES" ] || ADDRESS_FAMILIES="inet"
-
-# Fake ifupdown environment
-export IFACE="$1"
-export LOGICAL="$1"
-export METHOD="NetworkManager"
-export VERBOSITY="0"
-
-for i in $ADDRESS_FAMILIES; do
-
-    export ADDRFAM="$i"
-
-    # Run the right scripts
-    case "$2" in
-        up|vpn-up)
-            export MODE="start"
-            export PHASE="post-up"
-            run-parts /etc/network/if-up.d
-            ;;
-        down|vpn-down)
-            export MODE="stop"
-            export PHASE="post-down"
-            run-parts /etc/network/if-post-down.d
-            ;;
-# pre-up/pre-down not implemented. See
-# https://bugzilla.gnome.org/show_bug.cgi?id=387832
-#        pre-up)
-#            export MODE="start"
-#            export PHASE="pre-up"
-#            run-parts /etc/network/if-pre-up.d
-#            ;;
-#        pre-down)
-#            export MODE="stop"
-#            export PHASE="pre-down"
-#            run-parts /etc/network/if-down.d
-#            ;;
-        hostname|dhcp4-change|dhcp6-change)
-            # Do nothing
-            ;;
-        *)
-            echo "$0: called with unknown action \`$2'" 1>&2
-            exit 1
-            ;;
-    esac
-done
diff --git a/debian/NEWS b/debian/NEWS
new file mode 100644
index 00000000..be08db3b
--- /dev/null
+++ b/debian/NEWS
@@ -0,0 +1,16 @@
+network-manager (1.44.2-2) unstable; urgency=medium
+
+  NetworkManager or rather NetworkManager-dispatcher will no longer execute
+  ifupdown hook scripts from /etc/network/if-*.d/ on network state changes.
+
+  Packages that want to be notified and react on such network state changes
+  are advised to provide native NetworkManager script in
+  /usr/lib/NetworkManager/dispatcher.d.
+
+  Users may provide local hook scripts or override package provided ones by
+  installing those into /etc/NetworkManager/dispatcher.d.
+
+  For further information about the NetworkManager-dispatcher interface see
+  the NetworkManager-dispatcher(8) man page.
+
+ -- Michael Biebl <biebl@debian.org>  Wed, 18 Oct 2023 13:55:54 +0200
diff --git a/debian/network-manager.install b/debian/network-manager.install
index 29705b43..a1227a3d 100644
--- a/debian/network-manager.install
+++ b/debian/network-manager.install
@@ -26,4 +26,3 @@ lib/systemd/system/NetworkManager-wait-online.service
 lib/systemd/system/nm-priv-helper.service
 debian/NetworkManager.conf etc/NetworkManager/
 debian/org.freedesktop.NetworkManager.rules usr/share/polkit-1/rules.d/
-debian/01-ifupdown etc/NetworkManager/dispatcher.d/
diff --git a/debian/network-manager.maintscript b/debian/network-manager.maintscript
new file mode 100644
index 00000000..0fc5f839
--- /dev/null
+++ b/debian/network-manager.maintscript
@@ -0,0 +1 @@
+rm_conffile /etc/NetworkManager/dispatcher.d/01-ifupdown 1.44.2-2~