diff options
| author | Michael Biebl <biebl@debian.org> | 2010-11-17 21:58:42 +0000 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2010-11-17 21:58:42 +0000 |
| commit | b5ea3bfdeb0b6f2e1c53d0c565fd3636375d6712 (patch) | |
| tree | 47990d1c4f94ada9a3022783e71b9411e6c7eb24 | |
| parent | c3b3a3abf171490b6df155c8d8cd23bec4762c40 (diff) | |
Integrate debian/ifblacklist_migrate.sh from Ubuntu and install
it in /usr/lib/NetworkManager. Improve it to disable the interfaces with a #NetworkManager# prefix and re-enable them when the package is removed. (Closes: #530024) git-svn-id: svn+ssh://svn.debian.org/svn/pkg-utopia/packages/unstable/networkmanager@3768 ceb527fc-18e6-0310-9fe2-813c157c29e7
| -rw-r--r-- | debian/changelog | 10 | ||||
| -rw-r--r-- | debian/ifblacklist_migrate.sh | 66 | ||||
| -rw-r--r-- | debian/network-manager.install | 1 | ||||
| -rw-r--r-- | debian/network-manager.postinst | 6 | ||||
| -rw-r--r-- | debian/network-manager.postrm | 12 | ||||
| -rw-r--r-- | debian/network-manager.preinst | 1 |
6 files changed, 91 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog index a504c238..1ddc2ccc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +network-manager (0.8.1-4) UNRELEASED; urgency=low + + [ Raphaƫl Hertzog ] + * Integrate debian/ifblacklist_migrate.sh from Ubuntu and install + it in /usr/lib/NetworkManager. Improve it to disable the interfaces + with a #NetworkManager# prefix and re-enable them when the package is + removed. (Closes: #530024) + + -- Michael Biebl <biebl@debian.org> Wed, 17 Nov 2010 22:55:44 +0100 + network-manager (0.8.1-3) unstable; urgency=low * debian/control diff --git a/debian/ifblacklist_migrate.sh b/debian/ifblacklist_migrate.sh new file mode 100644 index 00000000..1d41266c --- /dev/null +++ b/debian/ifblacklist_migrate.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +# (C) 2007 Canonical Ltd. +# Author: Alexander Sack <asac@jwsdot.com> +# License: GNU General Public License, version 2 or any later version + +if test x$NIF_FILE = x; then + NIF_FILE=/etc/network/interfaces +fi + +auto_ifs=$(cat $NIF_FILE | \ + egrep "^auto|^allow-" | \ + sed -e 's/auto//' | \ + sed -e 's/allow-[^ ].* //') + +ifaces_to_disable="" + +echo Auto interfaces found: $auto_ifs + +# iterate over all auto interfaces +for i in $auto_ifs; do + IFS_old=$IFS; IFS="" + + NIF_FILE_content=$(cat $NIF_FILE | \ + sed -e 's/^[ \t]*auto.*$//' | \ + sed -e 's/^[ \t]*allow-.*$//' | \ + sed -e 's/^[ \t]*#.*$//' | grep -v ^$) + + # '--' is inserted by grep -A1 if there are multiple iface blocks + lines=$(echo $NIF_FILE_content | grep -A1 "^iface.*$i.*dhcp" | grep -v '\--') + IFS=" +" + + # if there is no iface line for that interface, we would still get a line + # count of 1 ... so use word_count 0 below to exclude ifaces that have no + # configuration at all. + word_count=$(echo $lines | wc -w) + line_count=0 + for line in $lines; do + nulled_line=$(echo "$line" | sed -e 's/[# ]//' | grep -v ^iface) + if test x$nulled_line != x; then + line_count=$(expr $line_count + 1) + fi + done + + if test $line_count -eq 0 -a $word_count -gt 0; then + ifaces_to_disable="$ifaces_to_disable $i" + echo iface to disable = $i + fi + IFS=$IFS_old +done + +backup_suffix=0 +while test -e ${NIF_FILE}.bak-${backup_suffix}; do + backup_suffix=$(expr $backup_suffix + 1) +done + +if [ -n "$ifaces_to_disable" ]; then + cp $NIF_FILE "$NIF_FILE.bak-${backup_suffix}" + for i in $ifaces_to_disable; do + echo -n "Disabling interface: $i ... " + sed -i -e "s/^\([ \t]*iface.*$i.*\)$/#NetworkManager#\1/" $NIF_FILE + echo done. + done +fi + diff --git a/debian/network-manager.install b/debian/network-manager.install index dbe43cfa..20769cfe 100644 --- a/debian/network-manager.install +++ b/debian/network-manager.install @@ -18,4 +18,5 @@ debian/tmp/etc/dbus-1/system.d/nm-avahi-autoipd.conf debian/tmp/etc/NetworkManager/dispatcher.d/ debian/tmp/etc/NetworkManager/system-connections/ debian/tmp/lib/udev/rules.d/*.rules +debian/ifblacklist_migrate.sh /usr/lib/NetworkManager debian/NetworkManager.conf etc/NetworkManager/ diff --git a/debian/network-manager.postinst b/debian/network-manager.postinst index 5f372abe..2535f400 100644 --- a/debian/network-manager.postinst +++ b/debian/network-manager.postinst @@ -66,6 +66,11 @@ case "$1" in if dpkg --compare-versions "$2" lt "0.8.1-2"; then mv_conffile "/etc/NetworkManager/nm-system-settings.conf" "/etc/NetworkManager/NetworkManager.conf" fi + + if [ -z "$2" ] || dpkg --compare-versions "$2" lt-nl "0.8.1-4"; then + echo "Disabling interfaces configured with plain DHCP in /etc/network/interfaces so that NetworkManager can take them over" + sh /usr/lib/NetworkManager/ifblacklist_migrate.sh + fi ;; abort-upgrade|abort-deconfigure|abort-remove) @@ -78,5 +83,4 @@ case "$1" in esac #DEBHELPER# -exit 0 diff --git a/debian/network-manager.postrm b/debian/network-manager.postrm index ad970dc8..cf67e431 100644 --- a/debian/network-manager.postrm +++ b/debian/network-manager.postrm @@ -24,7 +24,15 @@ case "$1" in rmdir --ignore-fail-on-non-empty /var/lib/NetworkManager fi ;; - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + remove) + # Restore the ifupdown configuration that were disabled at installation + backup_suffix=0 + while test -e /etc/network/interfaces.bak-${backup_suffix}; do + backup_suffix=$(($backup_suffix + 1)) + done + sed -i.bak-${backup_suffix} -e "s/^#NetworkManager#//g" /etc/network/interfaces + ;; + upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) @@ -34,5 +42,3 @@ case "$1" in esac #DEBHELPER# - -exit 0 diff --git a/debian/network-manager.preinst b/debian/network-manager.preinst index 80ab7a30..c02aca66 100644 --- a/debian/network-manager.preinst +++ b/debian/network-manager.preinst @@ -100,4 +100,3 @@ case "$1" in esac #DEBHELPER# -exit 0 |