Patchwork netbase: merge init script updates from upstream

login
register
mail settings
Submitter Andreas Oberritter
Date May 21, 2012, 4:39 p.m.
Message ID <1337618347-30900-1-git-send-email-obi@opendreambox.org>
Download mbox | patch
Permalink /patch/28227/
State New
Headers show

Comments

Andreas Oberritter - May 21, 2012, 4:39 p.m.
* Read /proc/mounts only once.
* Support many more network filesystem types.
* Remaining differences to netbase 4.47:
  - Uses the mountvirtfs keyword instead of mountkernfs
  - Doesn't use lsb functions
  - Doesn't print a warning if /etc/network/options exists
  - Doesn't use --exclude parameter for ifup, because
    busybox doesn't support it.

Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
---
 meta/recipes-core/netbase/netbase-4.47/init |  101 ++++++++++++++++++---------
 meta/recipes-core/netbase/netbase_4.47.bb   |    2 +-
 2 files changed, 70 insertions(+), 33 deletions(-)
Saul Wold - May 24, 2012, 5:55 p.m.
On 05/21/2012 09:39 AM, Andreas Oberritter wrote:
> * Read /proc/mounts only once.
> * Support many more network filesystem types.
> * Remaining differences to netbase 4.47:
>    - Uses the mountvirtfs keyword instead of mountkernfs
>    - Doesn't use lsb functions
>    - Doesn't print a warning if /etc/network/options exists
>    - Doesn't use --exclude parameter for ifup, because
>      busybox doesn't support it.
>
> Signed-off-by: Andreas Oberritter<obi@opendreambox.org>
> ---
>   meta/recipes-core/netbase/netbase-4.47/init |  101 ++++++++++++++++++---------
>   meta/recipes-core/netbase/netbase_4.47.bb   |    2 +-
>   2 files changed, 70 insertions(+), 33 deletions(-)
>
> diff --git a/meta/recipes-core/netbase/netbase-4.47/init b/meta/recipes-core/netbase/netbase-4.47/init
> index 8a67e1c..bace9df 100644
> --- a/meta/recipes-core/netbase/netbase-4.47/init
> +++ b/meta/recipes-core/netbase/netbase-4.47/init
> @@ -1,52 +1,89 @@
> -#!/bin/sh
> -#
> +#!/bin/sh -e
>   ### BEGIN INIT INFO
>   # Provides:          networking
> -# Required-Start:    $local_fs mountvirtfs
> +# Required-Start:    mountvirtfs $local_fs
>   # Required-Stop:     $local_fs
> +# Should-Start:      ifupdown
> +# Should-Stop:       ifupdown
>   # Default-Start:     S
>   # Default-Stop:      0 6
> -# Short-Description: Raise network interfaces and configure them
> +# Short-Description: Raise network interfaces.
>   ### END INIT INFO
>
> -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> +PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
>
> -if ! [ -x /sbin/ifup ]; then
> -    exit 0
> -fi
> +[ -x /sbin/ifup ] || exit 0
> +
> +check_network_file_systems() {
> +    [ -e /proc/mounts ] || return 0
> +
> +    if [ -e /etc/iscsi/iscsi.initramfs ]; then
> +	echo "not deconfiguring network interfaces: iSCSI root is mounted."
> +	exit 0
> +    fi
> +
> +    exec 9<&0<  /proc/mounts
> +    while read DEV MTPT FSTYPE REST; do
> +	case $DEV in
> +	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
> +	    echo "not deconfiguring network interfaces: network devices still mounted."
> +	    exit 0
> +	    ;;
> +	esac
> +	case $FSTYPE in
> +	nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
> +	    echo "not deconfiguring network interfaces: network file systems still mounted."
> +	    exit 0
> +	    ;;
> +	esac
> +    done
> +    exec 0<&9 9<&-
> +}
> +
> +check_network_swap() {
> +    [ -e /proc/swaps ] || return 0
> +
> +    exec 9<&0<  /proc/swaps
> +    while read DEV MTPT FSTYPE REST; do
> +	case $DEV in
> +	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
> +	    echo "not deconfiguring network interfaces: network swap still mounted."
> +	    exit 0
> +	    ;;
> +	esac
> +    done
> +    exec 0<&9 9<&-
> +}
>
>   case "$1" in
> -    start)
> -        echo -n "Configuring network interfaces... "
> -        ifup -a
> +start)
> +	echo -n "Configuring network interfaces... "
> +	ifup -a
>   	echo "done."
>   	;;
> -    stop)
> -        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
> -          grep -q "^/ nfs$"; then
> -            echo "NOT deconfiguring network interfaces: / is an NFS mount"
> -        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
> -          grep -q "^/ smbfs$"; then
> -            echo "NOT deconfiguring network interfaces: / is an SMB mount"
> -	elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
> -          grep -qE '^(nfs|smbfs|ncp|coda)$'; then
> -            echo "NOT deconfiguring network interfaces: network shares still mounted."
> -        else
> -            echo -n "Deconfiguring network interfaces... "
> -            ifdown -a
> -	    echo "done."
> -        fi
> +
> +stop)
> +	check_network_file_systems
> +	check_network_swap
> +
> +	echo -n "Deconfiguring network interfaces... "
> +	ifdown -a
> +	echo "done."
>   	;;
> -    force-reload|restart)
> -        echo -n "Reconfiguring network interfaces... "
> -        ifdown -a
> -        ifup -a
> +
> +force-reload|restart)
> +	echo "Running $0 $1 is deprecated because it may not enable again some interfaces"
> +	echo "Reconfiguring network interfaces... "
> +	ifdown -a || true
> +	ifup -a
>   	echo "done."
>   	;;
> -    *)
> -	echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
> +
> +*)
> +	echo "Usage: /etc/init.d/networking {start|stop}"
>   	exit 1
>   	;;
>   esac
>
>   exit 0
> +
> diff --git a/meta/recipes-core/netbase/netbase_4.47.bb b/meta/recipes-core/netbase/netbase_4.47.bb
> index a1462f8..f84e9a4 100644
> --- a/meta/recipes-core/netbase/netbase_4.47.bb
> +++ b/meta/recipes-core/netbase/netbase_4.47.bb
> @@ -4,7 +4,7 @@ HOMEPAGE = "http://packages.debian.org/netbase"
>   SECTION = "base"
>   LICENSE = "GPLv2"
>   LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
> -PR = "r1"
> +PR = "r2"
>
>   inherit update-rc.d
>

Merged into OE-Core

Thanks
	Sau!

Patch

diff --git a/meta/recipes-core/netbase/netbase-4.47/init b/meta/recipes-core/netbase/netbase-4.47/init
index 8a67e1c..bace9df 100644
--- a/meta/recipes-core/netbase/netbase-4.47/init
+++ b/meta/recipes-core/netbase/netbase-4.47/init
@@ -1,52 +1,89 @@ 
-#!/bin/sh
-#
+#!/bin/sh -e
 ### BEGIN INIT INFO
 # Provides:          networking
-# Required-Start:    $local_fs mountvirtfs
+# Required-Start:    mountvirtfs $local_fs
 # Required-Stop:     $local_fs
+# Should-Start:      ifupdown
+# Should-Stop:       ifupdown
 # Default-Start:     S
 # Default-Stop:      0 6
-# Short-Description: Raise network interfaces and configure them
+# Short-Description: Raise network interfaces.
 ### END INIT INFO
 
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
 
-if ! [ -x /sbin/ifup ]; then
-    exit 0
-fi
+[ -x /sbin/ifup ] || exit 0
+
+check_network_file_systems() {
+    [ -e /proc/mounts ] || return 0
+
+    if [ -e /etc/iscsi/iscsi.initramfs ]; then
+	echo "not deconfiguring network interfaces: iSCSI root is mounted."
+	exit 0
+    fi
+
+    exec 9<&0 < /proc/mounts
+    while read DEV MTPT FSTYPE REST; do
+	case $DEV in
+	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+	    echo "not deconfiguring network interfaces: network devices still mounted."
+	    exit 0
+	    ;;
+	esac
+	case $FSTYPE in
+	nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
+	    echo "not deconfiguring network interfaces: network file systems still mounted."
+	    exit 0
+	    ;;
+	esac
+    done
+    exec 0<&9 9<&-
+}
+
+check_network_swap() {
+    [ -e /proc/swaps ] || return 0
+
+    exec 9<&0 < /proc/swaps
+    while read DEV MTPT FSTYPE REST; do
+	case $DEV in
+	/dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
+	    echo "not deconfiguring network interfaces: network swap still mounted."
+	    exit 0
+	    ;;
+	esac
+    done
+    exec 0<&9 9<&-
+}
 
 case "$1" in
-    start)
-        echo -n "Configuring network interfaces... "
-        ifup -a
+start)
+	echo -n "Configuring network interfaces... "
+	ifup -a
 	echo "done."
 	;;
-    stop)
-        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
-          grep -q "^/ nfs$"; then
-            echo "NOT deconfiguring network interfaces: / is an NFS mount"
-        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |  
-          grep -q "^/ smbfs$"; then
-            echo "NOT deconfiguring network interfaces: / is an SMB mount"
-	elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
-          grep -qE '^(nfs|smbfs|ncp|coda)$'; then
-            echo "NOT deconfiguring network interfaces: network shares still mounted."
-        else
-            echo -n "Deconfiguring network interfaces... "
-            ifdown -a
-	    echo "done."
-        fi
+
+stop)
+	check_network_file_systems
+	check_network_swap
+
+	echo -n "Deconfiguring network interfaces... "
+	ifdown -a
+	echo "done."
 	;;
-    force-reload|restart)
-        echo -n "Reconfiguring network interfaces... "
-        ifdown -a
-        ifup -a
+
+force-reload|restart)
+	echo "Running $0 $1 is deprecated because it may not enable again some interfaces"
+	echo "Reconfiguring network interfaces... "
+	ifdown -a || true
+	ifup -a
 	echo "done."
 	;;
-    *)
-	echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
+
+*)
+	echo "Usage: /etc/init.d/networking {start|stop}"
 	exit 1
 	;;
 esac
 
 exit 0
+
diff --git a/meta/recipes-core/netbase/netbase_4.47.bb b/meta/recipes-core/netbase/netbase_4.47.bb
index a1462f8..f84e9a4 100644
--- a/meta/recipes-core/netbase/netbase_4.47.bb
+++ b/meta/recipes-core/netbase/netbase_4.47.bb
@@ -4,7 +4,7 @@  HOMEPAGE = "http://packages.debian.org/netbase"
 SECTION = "base"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
-PR = "r1"
+PR = "r2"
 
 inherit update-rc.d